题目
牛牛得到了一个字符串(可能含有空格),他希望在这些字符串中提取出数字。
例如:a1b23c456d007890 中可以提取出 1、23、456、7890 共4个数字。
现在,他得到了一个长度高达 1000 的字符串,请你帮他提取出所有的数字。
本题有多组数据。
输出提取出的所有数字,相邻两个数字用一个空格隔开。
不包含数字的时候输出空行。
注意,输出的数不能含有前导 0。
解题思路
遍历字符串的每个字符。
如果遇到了字符是数字的话,先判断是不是 0。
- 如果是 0,继续向后遍历,直到出现其他数字,直接输出数字;如果没有遇到其他数字,而是非数字字符,则输出 0。
- 如果是其他数字,直接输出数字,直到遇到非数字字符。
C++代码
#include<iostream> using namespace std; int main(){ string s; while(getline(cin,s)){ int i=0; while(i<s.size()){ if(s[i]>='0' && s[i]<='9'){ while(s[i]=='0') ++i; bool flag = false; while(s[i]>='0' && s[i]<='9'){ cout << s[i]; ++i; flag = true; } if(!flag) cout << "0"; cout << " "; } ++i; } cout << endl; } }