链接:https://ac.nowcoder.com/acm/contest/6885/A
来源:牛客网

题意:

多组输入,给你一行字符串,里面包含空格,让你将字符串中的数字输出,并且数字不包含前导零

solution:

从前往后遍历,当s[i]>='0'&&s[i]<='9'的时候,判断一下标志为0说明还未输出当前连续字符的任意一个数字,若当前位置是零的话并且后一个字符也是0那么continue,如果后一个不是0那么直接输出,将标记改为1,flag是用于标记是否前面输出过连续的数字,如果已经输出了,不管后面是否为0都不会存在前导零了

#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
string s;
int main()
{

    while(getline(cin,s))
    {
        int flag=0;
        int cnt=0;
        for(int i=0;i<s.length();i++)
        {
            if(s[i]>='0'&&s[i]<='9')
            {
                if(flag==0)
                {

                    if(s[i]=='0'&&(s[i+1]>='0'&&s[i+1]<='9'))
                        continue;
                    if(cnt!=0)
                        cout<<' ';
                    cout<<s[i];
                    cnt++;
                }
                else
                    cout<<s[i];
                flag=1;
            }
            else
                flag=0;
        }
        cout<<endl;
    }
    return 0;
}