题解 | #在字符串中找出连续最长的数字串#

在字符串中找出连续最长的数字串

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;
    }
}
全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务