1. 程式人生 > >2016年華為優招程式設計題

2016年華為優招程式設計題

題目大意是這樣的:

輸入一串字串,裡面是由整數和整數之間的逗號(,)組成的,例如 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];
			}

		}
		
	}
}