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