【LeetCode】第6天 - 557. 反转字符串中的单词 III

简介: 【LeetCode】第6天 - 557. 反转字符串中的单词 III

题目描述

在这里插入图片描述

解题思路

以空格为分割逐个查找单词,翻转单词。

  • 使用两个指针(left、right)分别指向单词的首尾;

(1)当s[right]不为空格时,right右移,left不变;
(2)当s[right]是空格时,确定一个单词的位置(s[left ~ right - 1]),将其翻转。
(3)当right移动至s[s.length-1],即字符串最后一个字符时,s[left ~ right]就确定了最后一个单词,将其翻转。结束。

代码实现

class Solution {
    /**
    * 翻转字符串
    * ch: 待翻转的字符数组
    * left:翻转字符起始下标
    * right:翻转字符末尾下标
    */
    public void reserve(char[] ch, int left, int right){
        char temp;
        while(left<right){
            temp = ch[left];
            ch[left] = ch[right];
            ch[right] = temp;
            ++left;
            --right;
        }

    }
    public String reverseWords(String s) {
        char[] ch = s.toCharArray();    //String为不可变类型,将其转换为字符数组形式进行操作
        int left = 0, right = 0;
        while(right < ch.length){
            if(ch[right] == ' '){
                reserve(ch, left, right-1);
                left = right + 1;
            }
            if(right == ch.length - 1){
                reserve(ch, left, right);
            }
            ++right;
        }

        return new String(ch);    //返回字符串
    }
}
目录
相关文章
|
2月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
34 6
|
2月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
23 0
|
4月前
【Leetcode 2645】构造有效字符串的最小插入数 —— 动态规划
状态定义:`d[i]`为将前 i 个字符拼凑成若干个 abc 所需要的最小插入数。状态转移方程: 如果` word[i]>word[i−1]`,那么`word[i]`可以和`word[i−1]`在同一组 abc 中,`d[i]=d[i−1]−1` ;否则`word[i]`单独存在于一组 abc 中,`d[i]=d[i−1]+2`
|
12天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
22 1
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
15天前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
2月前
|
存储
leetcode2744. 最大字符串配对数目
leetcode2744. 最大字符串配对数目
17 0
|
2月前
|
机器学习/深度学习 NoSQL Shell
力扣刷题-翻转字符串
力扣刷题-翻转字符串
12 1
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
[Java·算法·简单] LeetCode 28. 找出字符串中第一个匹配项的下标 详细解读
23 0
|
2月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
31 8

热门文章

最新文章