前言
《华为OD机试真题 C++》 本专栏包含华为OD机试真题C++解答,会实时更新收纳网友反馈,为大家更新最新的华为德科OD机试试题,为大家提供学习和练手的题库,订阅本专栏后可私信进交流群哦,答案仅供参考,不可照抄哦
■ 题目描述
【非严格递增连续数字序列】
输入一个字符串仅包含大小写字母和数字,求字符串中包含的最长的非严格递增连续数字序列的长度,
(比如12234属于非严格递增连续数字序列)。
输入描述
输入一个字符串仅包含大小写字母和数字,输入的字符串最大不超过255个字符。
输出描述
最长的非严格递增连续数字序列的长度
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
abc2234019A334bc
输出
4
说明
2234为最长的非严格递增连续数字序列,所以长度为4。
C++代码实现:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string input_str;
cin >> input_str;
int maxLength = 0;
int length = 0;
char maxChar = '0'; // 存储上一个数字字符
for (int i = 0; i < input_str.length(); i++) {
char c = input_str[i];
if (c >= maxChar && c <= '9') { // 是数字,且大于上一个数字
length++;
maxChar = c;
if (length > maxLength) {
maxLength = length;
}
} else if (c >= '0' && c <= '9') { // 是数字,但小于上一个数字
length = 1;
maxChar = c;
} else { // 如果不是数字
length = 0;
maxChar = '0';
}
}
cout << maxLength << endl;
return 0;
}