标签:时间 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