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

运行截图

相关推荐
Christo312 小时前
AAAI-2024《Multi-Class Support Vector Machine with Maximizing Minimum Margin》
人工智能·算法·机器学习·支持向量机·数据挖掘
元亓亓亓13 小时前
LeetCode热题100--79. 单词搜索
算法·leetcode·职场和发展
司铭鸿14 小时前
化学式解析的算法之美:从原子计数到栈的巧妙运用
linux·运维·服务器·算法·动态规划·代理模式·哈希算法
2501_9411437314 小时前
缓存中间件Redis与Memcached在高并发互联网系统优化与实践经验分享
leetcode
ekprada14 小时前
DAY 18 推断聚类后簇的类型
算法·机器学习·支持向量机
生信大表哥14 小时前
Python单细胞分析-基于leiden算法的降维聚类
linux·python·算法·生信·数信院生信服务器·生信云服务器
玫瑰花店15 小时前
万字C++中锁机制和内存序详解
开发语言·c++·算法
Elias不吃糖16 小时前
LeetCode每日一练(209, 167)
数据结构·c++·算法·leetcode
铁手飞鹰16 小时前
单链表(C语言,手撕)
数据结构·c++·算法·c·单链表
悦悦子a啊16 小时前
项目案例作业(选做):使用文件改造已有信息系统
java·开发语言·算法