牛牛爱字符串

牛牛爱字符串

https://ac.nowcoder.com/acm/problem/205084

题目

牛牛得到了一个字符串(可能含有空格),他希望在这些字符串中提取出数字。
例如: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;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
07-28 00:10
已编辑
门头沟学院 算法工程师
码农索隆:这哥们库库在我帖子下评论
点赞 评论 收藏
分享
07-23 18:18
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务