题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
http://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
// 找到所有的子串,并存入容器中 // 找子串的方法:遍历字符串,如果是数字就追加numStr,如果不是数字就清空,遍历过程中记录下最长子串的长度和所有子串
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
string input{""};
while(getline(cin, input)) {
string numStr{""};
int counter = 0; // 记录当前数字字符串的长度
int maxLen = 0; // 记录最长的数字字符串长度
string resStr{""};
vector<string> strVec;// 存放所有子串
for(int i = 0; i < input.size(); i++) {
if (input[i] >= '0' && input[i] <= '9') {
numStr += input[i];
counter++;
} else {
if (!numStr.empty()) {
strVec.push_back(numStr);
}
numStr = "";
maxLen = maxLen > counter ? maxLen : counter;
counter = 0;
}
}
// 如果数字字符串是最后一个子串,把最后一个存入
if (!numStr.empty()) {
strVec.push_back(numStr);
maxLen = maxLen > counter ? maxLen : counter;
}
for(int i = 0; i < strVec.size(); i++) {
if (strVec[i].size() == maxLen) {
resStr += strVec[i];
}
}
cout << resStr << "," << maxLen << endl;
}
}