题目:
输入一个英文句子。反转句子中单词的顺序。但是单词内字符顺序不变。
例如:输入"I am a student.",输入"student. a am I"。
解法:
字符串逆序即可。类似题目40. 即把题目40中的num的位置替换成 题目41中 空格的位置即可。
代码如下:
string ReverseSentence(string str) {
string res;
if(str.empty()||str.size()==0)
return res;
int begin =0;
int n=str.size();
for(int i=0;i<n;i++) //反转str.split(' ')切割后列表中的每一个单词中的字符顺序
{
if(str[i]==' ')
{
reverse_str(str,begin,i-1);
begin = i+1;
continue;
}
if(i==n-1) //处理i到达最后一个字符的情况。
reverse_str(str,begin,i);
}
reverse_str(str,0,n-1); // 反转整个字符串
return str;
}
void reverse_str(string &str,int begin,int end)
{
while(begin<end)
swap(str[begin++],str[end--]);
}