leetcode 151. Reverse Words in a String

本文介绍了一种使用栈来实现字符串中单词顺序反转的方法。通过遍历输入字符串并将每个单词压入栈中,最后依次弹出栈中的元素即可得到反转后的单词顺序。此方法适用于C++等编程语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

151. Reverse Words in a String

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",
return "blue is sky the".

如果要求O(1)空间,那就只能是前后找第一个单词然后换位置。那就比较麻烦。

class Solution {
public:
    void reverseWords(string &s)
    {
        stack<string> words;
        int k = 0;
        while (k < s.size())
        {
            int length = 1;
            if(s[k] != ' ')
            {
                while(1)
                {
                    if ( k + length < s.size() && s[k+length] != ' ')
                        length++;                
                    else
                    {
                        words.push(s.substr(k, length));
                        break;
                    }
                }
                k = k + length;
            }
            k++;
        }
        s = "";
        while(!words.empty())
        {
            s += words.top() + " ";
            words.pop();
        }
        s = s.substr(0, s.size() - 1);
        return;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值