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

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

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

相关推荐

02-12 17:30
已编辑
字节跳动_实习生(实习员工)
要怎么办呢牛:我觉得大厂日常实习最大的意义就是给自己背书,一个好公司的实习就像一个好学历似的,能够给自己增加一个标签,让别人觉得你可以。(至于真正实习干了啥,这个感觉并不太重要)。当然一家之言,仅供参考。另外,楼主已经很强了,实习毕业双双拿下,已经领先好多好多人了,羡慕啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务