【刷题训练】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;
    }
};

运行截图

相关推荐
天才测试猿15 分钟前
软件测试知识总结(基础篇)
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
wabs66620 分钟前
关于图论【最短路径之Dijkstra算法(堆优化版)|卡码网47.参加科学大会的思考】
数据结构·算法·图论·优先级队列·邻接表·小顶堆·卡码网
坚持编程的菜鸟39 分钟前
编写判断大小端程序
c语言·算法·判断大小端
papaofdoudou40 分钟前
判断排列逆序奇偶性的乘积判别法(范德蒙德符号法)
人工智能·算法
linux-hzh1 小时前
百日算法修炼 · Day 03
java·算法
嵌入式老牛3 小时前
三相电气量采集模块设计(三)非同步采样时的精度提升
算法·精度·计量
今天AI了吗3 小时前
精细化落地教程:TimechoAI调参标准+数据清洗规范+误差归因+阈值适配全维度指南
大数据·人工智能·算法
zephyr054 小时前
从递归到迭代:二叉树非递归前中后序遍历详解
算法
evans在进步4 小时前
LeetCode 2 两数相加:链表模拟加法,Java 图解进位过程
java·leetcode·链表