Leetcode刷题笔记题解(C++):LCR 181. 字符串中的单词反转

思路:根据栈的原理先进后出,使用栈来依次保存每个单词,然后再依次从栈中取出每个单词

cpp 复制代码
class Solution {
public:
    string reverseMessage(string message) {
        int left = 0;
        int right = message.size()-1;
        //消除字符串前后多余的空格,比如字符串"  hello world!  "
        while(left<=right&&message[left]==' ') left++;
        while(right>=left&&message[right]==' ') right--;
        stack<string>sk;
        string str;//用于保存单个字符
        //从第一个单词开始压入栈中
        while(left<=right){
            //遇到空格并且前一个字符不是空格则判定之前的就为单个单词,str.size()>0用于判定之前的一个字符不为空格
            if(message[left]==' '&&str.size()>0){
                sk.push(str);
                str.clear();
            }
            //生成单词
            else if(message[left]!=' ') str+=message[left];
            left++;
        }
        //最后一个单词遇不到空格了,单独压入栈中
        sk.push(str);
        string ret;
        while(!sk.empty()){
            ret+=sk.top();//从上至下取出栈中每个单词
            ret+=" ";//每个单词之后添加空格
            sk.pop();//弹栈
        }
        ret.pop_back();//最后一个单词之后跟了一个空格,弹出空格
        return ret;
    }

};
相关推荐
汉克老师7 分钟前
GESP2024年9月认证C++二级( 第三部分编程题(1) 数位之和 )
c++·循环结构·分支结构·gesp二级·gesp2级·求余数·拆数字
爱凤的小光15 分钟前
VisionPro 3D工具(自我笔记)
笔记·计算机视觉·3d
lxl130715 分钟前
C++算法(3)二分算法
数据结构·c++·算法
随意起个昵称15 分钟前
Dijstra算法学习笔记
笔记·学习·算法
2301_8059629319 分钟前
TF卡烧录系统盘文件后损坏
笔记
dalong1037 分钟前
A27:图像九宫格分割程序
笔记·aardio
袁气满满~_~1 小时前
深度学习笔记四
人工智能·笔记·深度学习
星火开发设计1 小时前
C++ 异常处理:try-catch-throw 的基本用法
java·开发语言·jvm·c++·学习·知识·对象
白太岁1 小时前
C++:(3) 线程的关联、条件变量、锁和线程池
开发语言·c++
马猴烧酒.1 小时前
【面试八股|Spring篇】Spring常见面试题详解笔记
笔记·spring·面试