链接: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;
}



京公网安备 11010502036488号