题目
思路
字符串 + 模拟。
在每一个串中找到一串数字串使用 str.substr() 截取下来,进行去前导零以及判零的操作。str.substr(x1, x2):截取到的是 这个串从
位置开始长度为
的串。
Code
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
std::string s;
int main() {
while(1) {
getline(std::cin, s);
if (s == "") break;
int len = s.length();
int last = -1;
for (int i = 0; i < len; ++i) {
if (last == -1 && s[i] >= '0' && s[i] <= '9') last = i;
if (last != -1 && (s[i] <'0' || s[i] > '9')) {
std::string sss = s.substr(last, i - last);
int l = sss.length();
bool flag = 0;
for (int j = 0; j < l; ++j) {
if (sss[j] != '0') flag = 1;
if (!flag && sss[j] == '0') continue;
printf("%c", sss[j]);
}
if (flag == 0) printf("0 ");
else printf(" ");
last = -1;
}
}
if (last != -1) {
std::string sss = s.substr(last, len - last);
int l = sss.length();
bool flag = 0;
for (int j = 0; j < l; ++j) {
if (sss[j] != '0') flag = 1;
if (!flag && sss[j] == '0') continue;
printf("%c", sss[j]);
}
if (flag == 0) printf("0 ");
else printf(" ");
last = -1;
}
puts("");
s = "";
}
return 0;
} 
京公网安备 11010502036488号