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