题目
思路
字符串 + 模拟。
在每一个串中找到一串数字串使用 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; }