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

};
相关推荐
玛丽莲茼蒿17 分钟前
Leetcode hot100 每日温度【中等】
算法·leetcode·职场和发展
样例过了就是过了36 分钟前
LeetCode热题100 分割等和子集
数据结构·c++·算法·leetcode·动态规划
zhangrelay1 小时前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
木木_王1 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
lkforce1 小时前
MiniMind学习笔记(三)--train_pretrain.py(预训练)
笔记·机器学习·ai·预训练·minimind·train_pretrain
OSwich1 小时前
【 Godot 4 学习笔记】数组(Array)
笔记·学习·godot
麦兜和小可的舅舅1 小时前
ClickHouse 列管理机制解析:从 COW、IColumn 到 CRTP
c++·clickhouse
北顾笙9801 小时前
day38-数据结构力扣
数据结构·算法·leetcode
m0_629494731 小时前
LeetCode 热题 100-----14.合并区间
数据结构·算法·leetcode
xin_nai1 小时前
LeetCode热题100(Java)(5)普通数组
算法·leetcode·职场和发展