题目
牛牛得到了一个字符串(可能含有空格),他希望在这些字符串中提取出数字。
例如: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;
}
} 
京公网安备 11010502036488号