181-将单词序列进行反转

题目如下:
给定一个字符串str,将字符串中的单词位置进行反转,输出反转结果。
输入:“student. a am I”。
输出:“I am a student.”

解题思路如下:
遍历字符串,逐个字符进行判断,如果不是空格的话,用tmp暂时保存,如果是空格的话,那么执行res = " "+tmp+res 进行反转,然后将tmp重置为空串

代码及注释如下:

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

运行截图如下:
181-将单词序列进行反转_第1张图片
代码演示图如下:
181-将单词序列进行反转_第2张图片

你可能感兴趣的:(林泽宇刷题,字符串,leetcode,算法)