码迷,mamicode.com
首页 > 编程语言 > 详细

Leetcode557 Reverse Words in a String III Java实现

时间:2018-07-05 23:40:21      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:时间   public   char   array   ems   ++   str   ret   遇到   

这次准备试一试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实现

标签:时间   public   char   array   ems   ++   str   ret   遇到   

原文地址:https://www.cnblogs.com/chason95/p/9270532.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!