栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Leetcode 151:翻转字符串中的每个单词

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode 151:翻转字符串中的每个单词

题目:给你一个字符串 s,颠倒字符串中 单词 的顺序。

单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开

示例 1:
输入: “the sky is blue”
输出: “blue is sky the”

示例 2:
输入: " hello world! "
输出: “world! hello”
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:
输入: “a good example”
输出: “example good a”
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。


思路:

1.先去掉多余的空格

the sky is blue

2.翻转全部字符串

eulb si yks eht

3.翻转每个单词

blue is the sky

class Solution {
    public String reverseWords(String s) {
        //1.删除多余空格
        StringBuffer sb = removeSpace(s);
        //2.反转字符串
        reverseString(sb,0,sb.length()-1);
        //3.反转单词
        reverseEachWord(sb);
        return sb.toString();
    }
    
    public StringBuffer removeSpace(String s){
        int start = 0,end = s.length() -1;
        while(start < end && s.charAt(start) == ' ') start++;
        while(start < end && s.charAt(end) == ' ') end--;
        StringBuffer sb = new StringBuffer();
        while(start <= end){
            char c = s.charAt(start++);
            if(c != ' '){
                sb.append(c);
            }else if(sb.charAt(sb.length() - 1) != ' '){
                sb.append(c);
            }
            
        }
        return sb;
    }
    //双指针翻反转字符串
    public void reverseString(StringBuffer sb,int start,int end)
    {
        while (start < end) {
            char temp = sb.charAt(start);
            sb.setCharAt(start, sb.charAt(end));
            sb.setCharAt(end, temp);
            start++;
            end--;
        }
    }
    //利用上一个翻转字符串 翻转每个单词
    public void reverseEachWord(StringBuffer sb){
        int start = 0;
        int end = 1;
        int n = sb.length();
        while(start < n){
            while(end < n && sb.charAt(end) != ' '){
                end++;
            }
            reverseString(sb,start,end -1);
            start = end + 1;
            end = start + 1;
        }
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号