2016年華為優招程式設計題
阿新 • • 發佈:2019-01-01
題目大意是這樣的:
輸入一串字串,裡面是由整數和整數之間的逗號(,)組成的,例如 1,7,9,232,43等。我們需要把逗號忽略並對整數進行排序,同時如果排序後整數相鄰如果有連續數,連續數中只保留最大數和最小數。
樣例輸入:4,3,2,5,9,10
樣例輸出:2 5 9 10
解題思路:
1.輸入字串用C++中的string類來處理。從中可以分隔出整數和逗號
2.用sort()方法進行排序。
3.輸出
#include<iostream> #include<string> #include<vector> #include<algorithm> using namespace std; int main() { string str; cin >> str; int length = str.length(); vector<int> vector; int tag = -1; int num = 0; for (int i = 0; i < length; i++) { if (str[i] == ',') { vector.push_back(num); num = 0; } if (str[i] >= '0'&&str[i] <= '9') { num = str[i] - '0'+num*10; } } vector.push_back(num); sort(vector.begin(),vector.end()); int INT_LENGTH = vector.size(); for (int i = 0; i < INT_LENGTH; i++) { if (i == 0)cout << vector[i]; else { if (vector[i] + 1 != vector[i + 1]) cout << " "<<vector[i]; else { while (vector[i] + 1 == vector[i + 1]) { i++; } cout << " " << vector[i]; } } } }