题目如下:
给定一个字符串str,将字符串中的单词位置进行反转,输出反转结果。
输入:“student. a am I”。
输出:“I am a student.”
解题思路如下:
遍历字符串,逐个字符进行判断,如果不是空格的话,用tmp暂时保存,如果是空格的话,那么执行res = " "+tmp+res 进行反转,然后将tmp重置为空串
代码及注释如下:
#include<iostream>
#include<string>
using namespace std;
string ReverseSentence(string str)
{
string res = "", tmp = "";//均初始化为空串
for (unsigned int i = 0; i < str.size(); ++i)//遍历字符串
{
if (str[i] == ' ')//遇到空格,进行反转
{
res = " " + tmp + res;//反转
tmp = "";//tmp重置为空串
}
else//不是空格,就保存在tmp中
{
tmp += str[i];
}
}
if (tmp.size())//如果最后一部分还有单词但是没有遇到空格了
res = tmp + res;//把最后一部分单词加到字符串的前面
return res;
}
int main()
{
string arr="student. a am I";
cout<<ReverseSentence(arr)<<endl;
return 0;
}
运行截图如下:
代码演示图如下: