面試OR筆試24——翻轉單詞順序

1 題目及要求

1.1 題目描述

輸入一英文句子,翻轉句子中單詞的順序,但單詞內的字符順序不變(標點字符和普通字母一樣處理)。例如:輸入I am a student.則輸出student. a am I

 

2 解答

2.1 題目分析

先翻轉各個單詞,然後再翻轉整個字符串。

 

2.2 代碼

void strReverse(char *beg, char *end){
	if(!(beg && end && beg < end)) return;
	--end;
	while(beg < end) swap(*beg++,*end--);
}

char* reverseSentence(char *str){
	if(!str) return str;
	char *pBeg=str, *pEnd=str;
	while(*pEnd){
		if(*pEnd == ' '){
			strReverse(pBeg,pEnd);
			pBeg = ++pEnd;
		}
		else ++pEnd;
	}
	strReverse(pBeg,pEnd);
	strReverse(str,pEnd);
	return str;
}



發佈了58 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章