【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);    //返回字符串
    }
}
目录
相关文章
|
1月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
1月前
|
存储 算法
LeetCode第43题字符串相乘
LeetCode第43题"字符串相乘"的解题方法,通过使用数组存储乘积并处理进位,避免了字符串转换数字的复杂性,提高了算法效率。
LeetCode第43题字符串相乘
|
1月前
|
算法 Java
LeetCode第28题找出字符串中第一个匹配项的下标
这篇文章介绍了LeetCode第28题"找出字符串中第一个匹配项的下标"的两种解法:暴力解法和KMP算法,并解释了KMP算法通过构建前缀表来提高字符串搜索的效率。
LeetCode第28题找出字符串中第一个匹配项的下标
|
1月前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)
|
1月前
|
算法 JavaScript Python
【Leetcode刷题Python】79. 单词搜索和剑指 Offer 12. 矩阵中的路径
Leetcode第79题"单词搜索"的Python解决方案,使用回溯算法在给定的二维字符网格中搜索单词,判断单词是否存在于网格中。
21 4
|
1月前
|
Python
【Leetcode刷题Python】生词本单词整理
文章提供了一个Python程序,用于帮助用户整理和排版生词本上的单词,包括去除重复单词、按字典序排序,并按照特定的格式要求进行打印排版。
21 3
|
1月前
|
Python
【Leetcode刷题Python】318. 最大单词长度乘积
本文提供了LeetCode题目318的Python编程解决方案,题目要求在一个字符串数组中找出两个不含有公共字母的单词,且这两个单词的长度乘积最大,如果不存在这样的两个单词,则返回0。
12 0
|
3月前
|
算法
力扣每日一题 6/23 字符串/模拟
力扣每日一题 6/23 字符串/模拟
27 1
|
3月前
|
索引
力扣每日一题 6/27 字符串 贪心
力扣每日一题 6/27 字符串 贪心
24 0
|
3月前
|
Python
力扣随机一题 模拟+字符串
力扣随机一题 模拟+字符串
22 0