华为2018秋招编程题1:在字符串中找出连续最长的数字串

来源:互联网 发布:模拟城市5未来之城mac 编辑:程序博客网 时间:2024/06/05 02:44

题目描述

在字符串中找出连续最长的数字串,并把这个串的长度返回。如果存在长度相同的连续数字串,返回最后一个连续数字串。
注意:数字串只需要是数字组成的就可以,并不需要顺序,比如数字串“1234”的长度小于数字串“1359055”,如果没有数字,则返回空字符串而不是NULL!(说明:不需要考虑负数)

输入描述
字符串
输出描述
连续数字串&在所有数字串最长的长度

示例

输入
abcd12345ed125ss123058789
输出
1230558789
9

代码(75%)

题目中没有明确说明,在空串的时候应该怎么输出,猜测是这个问题。

#include <iostream>#include <string>int main() {    string str;    while (cin >> str) {        int max = 0;        string tmp;        string res;        for (int i = 0; i < str.size(); ++i) {            if (str[i] >= '0' && str[i] <= '9') {                tmp += str[i];                while (str[i+1] >= '0' && str[i+1] <= '9') {                    i++;                    tmp += str[i];                }                if (tmp.size() > max) {                    max = tmp.size();                    res = tmp;                } else if (tmp.size() == max) {                    res = tmp;                }            }            tmp.clear();        }        cout << res << "," << max << endl;    }    return 0;}
阅读全文
0 0
原创粉丝点击