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

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

https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec

#include <iostream>
#include <string>
using namespace std;

//最长连续数字串
class LongestConseNumStr {
  private:
    string s;

  public:
    //构造函数
    LongestConseNumStr(const string s);

    //析构函数
    ~LongestConseNumStr();

    //在字符串中找出连续最长的数字串
    const int findLongestConseNumStr(void)const;

    //判断s是否是数字串
    const bool isNumStr(const string s)const;
};

LongestConseNumStr::LongestConseNumStr(const string s) {
    this->s = s;
    return;
}

LongestConseNumStr::~LongestConseNumStr() {
}

const int LongestConseNumStr::findLongestConseNumStr(void) const {
    //从最长的可能长度开始搜寻,找到后开始打印,到尾部退出
    bool flag = false;
    int len = this->s.size();
    for (; len > 0; len--) {
        for (int i = 0; i <= this->s.size() - len; i++) {
            string sub = this->s.substr(i, len);
            if (this->isNumStr(sub)) {
                flag = true;
                cout << sub;
            }
        }
        if (flag) {
            cout << ',';
            return len;
        }
    }
    return 0;
}

const bool LongestConseNumStr::isNumStr(const string s) const {
    for (char ch : s)
        if ((ch < '0') || (ch > '9'))
            return false;
    return true;
}

int main() {
    string a;
    while (cin >> a) { // 注意 while 处理多个 case
        cout << LongestConseNumStr(a).findLongestConseNumStr() << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

01-30 09:45
燕山大学 Java
喵_coding:这种直接跑就完事了 哪有毕业了才签合同 任何offer和三方都没有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务