Leetcode557 Reverse Words in a String III Java实现

Posted chason95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode557 Reverse Words in a String III Java实现相关的知识,希望对你有一定的参考价值。

这次准备试一试split一个String是用split好,还是手动找Index之后Substring好。因为强哥说Leetcode上运行时间不稳定,有时可能速度会差50%之多!

方法1,split:

public class ReverseWordsInAStringIII557 {
    public String reverseWords(String s) {
        String[] words = getWordsv1(s);
        StringBuilder result = new StringBuilder();
        boolean isFirst = true;
        for (String word:words) {
            StringBuilder sb = reverseWord(word);
            if (isFirst) {
                isFirst =false;
                result.append(sb);
            }
            else {
                result.append(" ");
                result.append(sb);
            }
        }
        return result.toString();
    }
    public static String[] getWordsv1(String s) {
        String[] words = s.split(" ");
        return words;
    }
    public StringBuilder reverseWord(String s) {
        char[] letters = s.toCharArray();
        int len = letters.length;
        for (int i =0;i<len/2;i++) {
            char temp = letters[i];
            letters[i] = letters[len-1-i];
            letters[len-1-i] = temp;
        } 
        StringBuilder sb = new StringBuilder();
        sb.append(letters);
        return sb;
    }
}

技术分享图片

已经很不错了。下面尝试方法2,手动:

um……突然发现,String.indexOf方法不能返回所有的index,只能返回第一个和最后一个,um……纯手动遍历一波?试试吧。

尝试去写发现要用ArrayList,因为直接用int[]没法确定长度,那效率肯定就降低了。

所以以后遇到这种split不确定长度的问题还是用split吧,有定长且数量不多的split可以尝试更快的原始方法。

 

另外看到Discuss区里这篇也不错https://leetcode.com/problems/reverse-words-in-a-string-iii/discuss/101963/Easiest-Java-Solution-(9ms)-Similar-to-Reverse-Words-in-a-String-II

 

以上是关于Leetcode557 Reverse Words in a String III Java实现的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode - 557. Reverse Words in a String III

LeetCode 557. Reverse Words in a String III

leetcode-557-Reverse Words in a String III

LeetCode 557. Reverse Words in a String III

Leetcode557 Reverse Words in a String III Java实现

leetcode No557. Reverse Words in a String III