Description

牛牛得到了一个字符串(可能含有空格),他希望在这些字符串中提取出数字。
例如:a1b23c456d007890中可以提取出1, 23, 456, 7890共4个数字。

现在,他得到了一个长度高达1000的字符串,请你帮他提取出所有的数字。

Solution

注意两个细节
1:输出的时候格式是字符串,因为数字过长整型变量存不下。
2:无前导0

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    string s;
    while(getline(cin, s)) {
            vector<string> v;
            int flag = 0;
            for(int i = 0; i < s.size(); i++) {
                    if(isdigit(s[i])) {
                        string t;
                        int lead = 0;
                        int flag = 0;
                        while(i < s.size() && isdigit(s[i])) {
                            flag = 1;
                            if(s[i] != '0') lead = 1;
                            if(!lead && s[i] == '0') {
                                i++;
                                continue;
                            }
                            else t += s[i];
                            i++;
                        }
                        if(flag && t == "") t = "0";
                        v.push_back(t);
                    }
            }
            for(int i = 0; i < v.size(); i++) {
                cout << v[i] << ' ';
            }
            cout << "\n";
    }
  return 0;
}