Problem Description 輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那麼就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。
0051231232050775
0 77 12312320
因為最大分割出來的數字不超過整數,所以排序不成問題了。
就是如何分割出這個字符串。
細節:
1 連續5?
2 開頭有5?
3 結尾5?
4 結尾不是5,別漏了結尾的數字
簡單題目,放松下吧。
#include#include #include #include #include using namespace std; int main() { string strs; while (cin>>strs) { int num = 0; vector vi; int i = 0; for ( ; i < (int) strs.size() && strs[i] == '5'; i++); for ( ; i < (int)strs.size(); ) { if ('5' == strs[i]) { vi.push_back(num); num = 0; for (i++; i < (int) strs.size() && strs[i] == '5'; i++); } else { num = num * 10 + (strs[i] - '0'); i++;//細節 if (i == (int)strs.size()) vi.push_back(num);//細節 } } sort(vi.begin(), vi.end()); for (int i = 0; i < (int)vi.size() - 1; i++) { printf("%d ", vi[i]); } printf("%d\n", vi[vi.size()-1]); } return 0; }