美文网首页
剑指 Offer 第58-1题:翻转单词顺序

剑指 Offer 第58-1题:翻转单词顺序

作者: 放开那个BUG | 来源:发表于2022-08-11 22:42 被阅读0次

1、前言

题目描述

2、思路

这道题有两个思路,暴力和双指针。

暴力:直接去除首位空格,接着使用正则表达式 "\s+" 分割字符串为字符数组,然后倒序拼接起来即可(一般工程这样使用)。

双指针:使用双指针 i、j。先去掉字符串首尾空格,然后让两个指针开始在字符串末尾,i 不断往前进,直到遇到空格,则将字符串收集起来;然后 i 继续前进,遇到非空格说明到字符了,然后将 j 也移动到 i 的位置,一直到 i 到字符串首位。

3、代码

暴力解法:

class Solution {
    public String reverseWords(String s) {
        if(s == null || s.length() == 0 || s.matches("\\s+")){
            return "";
        }

        String[] str = s.trim().split("\\s+");
        StringBuffer res = new StringBuffer();
        for(int i = str.length - 1; i >= 0; i--){
            res.append(str[i]).append(" ");
        }
        return res.substring(0, res.length() - 1);
    }
}

双指针解法:

class Solution {
   public String reverseWords(String s) {
        if(s == null || s.length() == 0 || s.matches("\\s+")){
            return "";
        }

        s = s.trim();
        StringBuffer res = new StringBuffer();
        int i = s.length() - 1, j = i;
        while(i >= 0){
            while (i >= 0 && s.charAt(i) != ' '){
                i--;
            }
            res.append(s.substring(i + 1, j + 1)).append(" ");
            while (i >= 0 && s.charAt(i) == ' '){
                i--;
            }
            j = i;
        }
        return res.substring(0, res.length() - 1);
    }
}

相关文章

  • 剑指 Offer 第58-1题:翻转单词顺序

    1、前言 2、思路 这道题有两个思路,暴力和双指针。 暴力:直接去除首位空格,接着使用正则表达式 "\s+" 分割...

  • 剑指offer | 翻转单词顺序

    翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,为简单起见,标点符号和普通字母一样处...

  • 【剑指 offer】翻转单词顺序。

    1、题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 为简单起见,标点符号和普通字母一样...

  • 每日一练(31):翻转单词顺序

    title: 每日一练(31):翻转单词顺序 categories:[剑指offer] tags:[每日一练] d...

  • [剑指offer] 翻转单词顺序列

    本文首发于我的个人博客:尾尾部落 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句...

  • 【剑指Offer 42】翻转单词顺序

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。 代...

  • 剑指Offer--翻转单词顺序

    题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写...

  • 剑指offer第二版-58.翻转单词顺序

    本系列导航:剑指offer(第二版)java实现导航帖 面试题58:翻转单词顺序 题目要求:输入一个英文句子,翻转...

  • 剑指offer 某-翻转单词顺序列

    此题还算简单,但是总有更好的思路。第一反应是先翻转每个单词,再翻转每个句子。但是觉得翻转函数要自己写太麻烦了。(原...

  • 剑指offer 65- 翻转单词顺序

    输入一个英文句子,单词之间用一个空格隔开,且句首和句尾没有多余空格。 翻转句子中单词的顺序,但单词内字符的顺序不变...

网友评论

      本文标题:剑指 Offer 第58-1题:翻转单词顺序

      本文链接:https://www.haomeiwen.com/subject/xxobbrtx.html