当前位置:网站首页>力扣(LeetCode)186. 翻转字符串里的单词 II(2022.07.05)

力扣(LeetCode)186. 翻转字符串里的单词 II(2022.07.05)

2022-07-06 04:37:00 ChaoYue_miku

给定一个字符串,逐个翻转字符串中的每个单词。

示例:

输入: [“t”,“h”,“e”," “,“s”,“k”,“y”,” “,“i”,“s”,” “,“b”,“l”,“u”,“e”]
输出: [“b”,“l”,“u”,“e”,” “,“i”,“s”,” “,“s”,“k”,“y”,” ",“t”,“h”,“e”]

注意:

单词的定义是不包含空格的一系列字符
输入字符串中不会包含前置或尾随的空格
单词与单词之间永远是以单个空格隔开的
进阶:使用 O(1) 额外空间复杂度的原地解法。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-words-in-a-string-ii

方法一:双指针

C++提交内容:

class Solution {
    
public:
    void reverseWords(vector<char>& s) {
    
        int left = 0;
        int right = 0;
        int len = s.size();
        while (right < len) {
    
            if (s[right] == ' ') {
    
                Swap(s, left, right - 1);
                right++;
                left = right;
            } else {
    
                right++;
            }
        }
        Swap(s, left, len - 1);
        Swap(s, 0, len - 1);
    }
    void Swap(vector<char>& s, int left, int right) {
    
        char temp;
        while (left < right) {
    
            temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
    }
};
原网站

版权声明
本文为[ChaoYue_miku]所创,转载请带上原文链接,感谢
https://chaoyue.blog.csdn.net/article/details/125630441