程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 1106 排序 其實是字符串分割

HDU 1106 排序 其實是字符串分割

編輯:C++入門知識

Problem Description 輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那麼就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。

你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出。


Input 輸入包含多組測試用例,每組輸入數據只有一行數字(數字之間沒有空格),這行數字的長度不大於1000。

輸入數據保證:分割得到的非負整數不會大於100000000;輸入數據不可能全由‘5’組成。

Output 對於每個測試用例,輸出分割得到的整數排序的結果,相鄰的兩個整數之間用一個空格分開,每組輸出占一行。

Sample Input
0051231232050775

Sample Output
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;
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved