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; }