反转单词
问题
这个题目说的是,给你一个字符串,你要写一个函数反转这个字符串中的单词,然后返回处理后的字符串。注意,单词之间只用一个空格隔开。
比如说给你的字符串是:
"I am busy."
反转这个字符串中的 3 个单词,得到:
"I ma .ysub"
注意,最后的句号要连同单词一起反转。
代码
public class AlgoCasts {
// Time: O(n), Space: O(n)
public String reverseWords(String s) {
if (s == null || s.length() == 0) return s;
char[] c = s.toCharArray();
int start = 0, end = 0;
while (start < c.length) {
while (end < c.length && c[end] != ' ') ++end;
for (int i = start, j = end-1; i < j; ++i, --j) {
char tmp = c[i];
c[i] = c[j];
c[j] = tmp;
}
start = end + 1;
end = start;
}
return new String(c);
}
}