5-32 說反話-加強版


給定一句英語,要求你編寫程序,將句中所有單詞的順序顛倒輸出。

輸入格式:

測試輸入包含一個測試用例,在一行內給出總長度不超過500 000的字符串。字符串由若干單詞和若干空格組成,其中單詞是由英文字母(大小寫有區分)組成的字符串,單詞之間用若干個空格分開。

輸出格式:

每個測試用例的輸出占一行,輸出倒序后的句子,並且保證單詞間只有1個空格。

輸入樣例:

Hello World   Here I Come

輸出樣例:

Come I Here World Hello

解題思路:

先處理字符串,刪除多余的空格,形成新字符串。然后逆序輸出剛才處理好的字符串,即碰到空格就輸出單詞。

解題代碼:

#include<stdio.h>
#define MAX 500000

int main ()
{
	char s;
	char t[MAX];
	int i = 0, count = 0, flag = 0;
	while ((s=getchar()) != '\n') {
		if (s != ' ') {
			flag = 1; //標記遇到單詞 
			t[i++] = s;
			count = 0;
		} else if (count > 0) {
			continue;
		} else if (flag) {
			t[i++] = s; //只有之前遇到單詞的情況下碰到空格才把這個空格寫入目標字符串 
			count ++;
		}
	} //刪除多余的空格,將目標字符串放入 t 中 
	
	count = 0;
	int j;
	for (i-=1; i>=0; i--) {
		if (t[i] != ' ') {
			count ++; // 這里的 count 統計的是單詞的位數 
		} else if (t[i]==' ' && count > 0) {
			for (j=i+1; j<=i+count; j++) {
				printf("%c", t[j]);
			} //遇到空格就輸出單詞 
			printf(" ");
			count = 0;
		}
	} // 還剩最后一個單詞沒輸出
	for (j=i+1; j<=i+count; j++) {
		printf("%c", t[j]);
	} 

	return 0; 
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM