文章目录
- OR59 字符串中找出连续最长的数字串
- 题目思路分析
- 实现代码
注:本次练习题目出自牛客网
OR59 字符串中找出连续最长的数字串
题目思路分析
首先想到的是用双指针模拟,进行检索比较输出
以示例1为例:
1.首先i遍历str直到遍历到数字(如①所示)
2.将j的位置和i一样,之后j进行遍历直到字母,这时就找到了第一个数字串(如②所示)
3.将i和j同步再重复1. 2. 进行遍历(如③ ④ ⑤)由于第二次len=3<第一次len=5,题中要求最长数字串所以不更新len
4.之后(如⑥所示)长度比我们记录的长所以更新我们记录的数字串的起始位置和数字串长度
5.直到i走到字符串的结尾
实现代码
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
int begin = 0, len = 0;
for (int i = 0; i < str.size(); i++)
{
if (str[i] >= '0' && str[i] <= '9')//当i遍历时遇到数字时进入判断
{
int j = i;
while (j < str.size() && str[j] >= '0'&& str[j] <= '9') j++;//进行遍历数字串
if (j - i>len)//判断长度知否是最长,进行判断更新
{
begin = i;
len = j - i;
}
i = j;//将i更新到j以便继续比遍历
}
}
cout << str.substr(begin, len) << endl;
return 0;
}
那么恭喜你
点赞,收藏,关注