题意:给你一串字符串(含空格),问字符串里有哪些数
这题蛮简单的,一个一个找出数字就可以了,但比赛脑抽了竟然真的用整数去记录答案(字符串长度小于等于1000),具体一些小细节就在代码里讲了
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
string str;
int main() {
while (getline(cin, str)) {//读入一行
int len = str.length(),lead=1,sign=0;//lead标记是否是前导0,sign标记是否有答案
vector<char> vec;//记录答案
for (int i = 0; i < len; i++) {
if (str[i] >= '0' && str[i] <= '9') {
sign = 1;
if (str[i] == '0' && lead) continue ;//有前导零,再来0还是0
else {//没前导零直接加上就可
lead = 0;
vec.push_back(str[i]);
}
}
else if(sign){
if (vec.size() == 0) vec.push_back('0');//如果都是0,那么把0加入
vector<char>::iterator iter = vec.begin();
for (iter; iter != vec.end(); ++iter) {
cout << *iter;
}
vec.clear();
lead = 1;
sign = 0;
cout << " ";
}
}
if (sign) {//结尾有数的情况
if (vec.size() == 0) vec.push_back('0');
vector<char>::iterator iter = vec.begin();
for (iter; iter != vec.end(); ++iter) {
cout << *iter;
}
vec.clear();
lead = 1;
sign = 0;
cout << " ";
}
cout << endl;
}
}