Saturday, December 20, 2014

[LeetCode]Reverse Words in a String

比较简单的一题, 用一个临时变量来存每一个word,然后append即可,O(n)时间,O(n)空间,每一次去取一个单词,注意handle有多个space情况即可,写代码的时候内部循环注意判断越界。


代码如下:

public class Solution {
public String reverseWords(String s) {
if (s == null)
return "";
String res = "";
int len = s.length();
for (int i = 0; i < len;) {
String temp = "";
while (i < len && s.charAt(i) == ' ')
i++;
if (i == len)
break;
while (i < len && s.charAt(i) != ' ')
temp += s.charAt(i++);
res = res.length() == 0? temp: temp + " " + res;
}
return res;
}
}
如果要优化space的话就要牺牲时间复杂度,目前没有想到更好的优化。 值得注意的是,处理多个空格的问题,把多个空格和一个元素一起看成一个元素的处理方法更加有效,有空格的话先discard多个空格,判断是否越界,再去取下一个元素。

No comments:

Post a Comment