题目描述:
定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
提示:
1 <= s.length <= 5 * 104
s 包含可打印的 ASCII 字符。
s 不包含任何开头或结尾空格。
s 里 至少 有一个词。
s 中的所有单词都用一个空格隔开。
题目思路:
开辟一个stringBuffer 用来拼接最后的结果。当遍历到空格时便知道是一个单词的末尾。此时逆序添加这个单词的字母到Buffer中。
public static String reverseWords(String s) {
StringBuffer ret = new StringBuffer();
int length = s.length();
int i = 0;
while (i < length){
int start = i;
while (i < length && s.charAt(i) != ' '){
i++;
}
for (int p = start; p <i ; p++){
ret.append(s.charAt(start+i-1-p));
}
while (i < length && s.charAt(i) == ' '){
i++;
ret.append(' ');
}
}
return ret.toString();
}