用C++代码实现 输入一个字符串,求该字符串中最长连续数字序列出现的起始位置及其长度
时间: 2023-11-26 10:09:41 浏览: 99
寻找字符串的最长回文序列, C语言实现
5星 · 资源好评率100%
以下是用 C++ 实现输入一个字符串,求该字符串中最长连续数字序列出现的起始位置及其长度的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s); // 输入字符串
int start = -1; // 最长连续数字序列的起始位置
int len = 0; // 最长连续数字序列的长度
int curStart = -1; // 当前连续数字序列的起始位置
int curLen = 0; // 当前连续数字序列的长度
for (int i = 0; i < s.length(); i++) {
if (isdigit(s[i])) { // 如果当前字符是数字
if (curStart == -1) { // 如果当前没有连续数字序列
curStart = i; // 更新当前连续数字序列的起始位置
}
curLen++; // 更新当前连续数字序列的长度
} else { // 如果当前字符不是数字
if (curLen > len) { // 如果当前连续数字序列比最长连续数字序列更长
start = curStart; // 更新最长连续数字序列的起始位置
len = curLen; // 更新最长连续数字序列的长度
}
curStart = -1; // 重置当前连续数字序列的起始位置
curLen = 0; // 重置当前连续数字序列的长度
}
}
if (curLen > len) { // 如果最后一个连续数字序列比最长连续数字序列更长
start = curStart; // 更新最长连续数字序列的起始位置
len = curLen; // 更新最长连续数字序列的长度
}
if (start == -1) { // 如果没有连续数字序列
cout << "No consecutive digit sequence found." << endl;
} else { // 如果有连续数字序列
cout << "The longest consecutive digit sequence starts at position " << start << " and has length " << len << "." << endl;
}
return 0;
}
```
输入一个字符串后,程序会输出形如 "The longest consecutive digit sequence starts at position x and has length y." 或者 "No consecutive digit sequence found." 的信息,其中 x 和 y 分别为最长连续数字序列的起始位置和长度。
阅读全文