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

浙公网安备 33010602011771号