题目
本题链接:字符串中找出连续最长的数字串
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述:
输出描述:
示例1:
解题思路:
遍历字符串,使用cur记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了,则将数字串和之前的数字串比较,如果更长,则更新更长的数字串到ret字符串。
图解:
有3个字符串,str
字符串保存输入的数据;cur
字符串用来保存当前遍历的数字字符;ret
字符串用来保存连续最长的数字串。
代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
cin >> str;
string cur;//当前遍历的数字字符
string ret;//当前最长的数字字符串
for(int i = 0; i <= str.size(); i++)
{
//abcd12345ed125ss123456789
//如果最长的数字串在最后,i遍历完,cur中是最长的数字串,
//但是此时i == size(), 不会在进入循环,无法更新ret,
//所以使i <= size(),会再次进入循环,而'\0'不是数字字符,就会进入else更新ret
if(str[i] >= '0' && str[i] <= '9')
cur += str[i];
else
{
if(cur.size() > ret.size())
ret = cur;
else
cur.clear();//清空cur
}
}
cout << ret << endl;
return 0;
}