牛客练习赛67 A 牛牛爱字符串
题目链接:https://ac.nowcoder.com/acm/contest/6885/A
从字符串中提取数字,并去除先导0,需要注意这里不能用while(cin>>str),因为会跳过输入字符串中的空格。
单独被分隔一个0,也需要输出,连续多个0的组合则输出最后一个0。
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string str;
int flag;
while(getline(cin,str)){
flag = 0;
for(size_t i = 0; i < str.size(); i++){
// 为数字
if(str[i] >= '0' && str[i] <= '9'){
// 为0,且不为最后一位,前面也没有非0数字
if(str[i] == '0' && flag !=2 && i != str.size() - 1 ){
// 先导0
flag = 1;
}else{
// 数字
flag = 2;
cout<<str[i];
}
}else{
// 全0
if(flag == 1)cout<<0;
// 数字后的第一个字符,输出空格
if(flag != 0)cout<<" ";
// 恢复状态
flag = 0;
}
}
// 换行
cout<<endl;
}
}
京公网安备 11010502036488号