【刷题训练】LeetCode:557. 反转字符串中的单词 III

557. 反转字符串中的单词 III

题目要求

示例 1:

输入:s = "Let's take LeetCode contest"

输出:"s'teL ekat edoCteeL tsetnoc"

示例 2:

输入: s = "Mr Ding"

输出:"rM gniD"

思路:

第一步:让 i 指向起始位置,当 i 不为空格时,就往后挪动,遇到空格就停下来,此时 i 指向空格

第二步:交换反转第一个单词 Let's 的顺序

第三步:重复1,2步骤。将所有的单词都自己反转。如下

如果是反转每个单词在顺序,那么就在加上第四步。

第四步:整体反转一遍。

C++代码

cpp 复制代码
class Solution {
public:
    string reverseWords(string s) {
        int len = s.length();
        int i = 0;
        while (i < len) {
            int start = i;
            // 1.找到第一个单词,遇到空格就停止
            while (i < len && s[i] != ' ') {
                i++;
            }
            
            // 2.反转单词的顺序
            int left = start;
            int right = i - 1;
            while (left < right) {
                swap(s[left], s[right]);
                left++;
                right--;
            }

            // 3.此时i还是指向空格的,所以继续让i++,指向下一个单词
            while (i < len && s[i] == ' ') {
                i++;
            }
        }
        return s;
    }
};

运行截图

相关推荐
Tisfy14 分钟前
LeetCode 0598.区间加法 II:最小值
算法·leetcode·题解·思维
望云山1901 小时前
4.回归与聚类算法 4.1线性回归
算法·回归·聚类
秋意钟2 小时前
数据结构(AVL树、B-Tree、B+Tree)
数据结构·算法
hurrycry_小亦2 小时前
洛谷网站: P3029 [USACO11NOV] Cow Lineup S 题解
算法
LUCIAZZZ3 小时前
Hot100之图论
java·数据结构·算法·leetcode·深度优先·图论
tan180°4 小时前
DS图(中)(19)
开发语言·数据结构·c++·算法·深度优先·图论
风靡晚4 小时前
论文解读:《基于TinyML毫米波雷达的座舱检测、定位与分类》
人工智能·算法·分类·信息与通信·信号处理
小姚也要变强4 小时前
结构体排序 C++ 蓝桥杯
数据结构·c++·算法·蓝桥杯
JNU freshman4 小时前
蓝桥杯思维训练(五)
算法·蓝桥杯
余辉zmh4 小时前
【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(三)
数据结构·c++·算法·leetcode·贪心算法