题目描述
题目描述
思路
主要是利用快慢指针和字符串的截取 还要了解去掉首尾空格的函数是trim
那s="the sky is blue"举例
这个例子是没有首尾空格的,以防万一,我们不管有没有,先去掉首尾空格
s =s.trim();
去掉之后,我们定义两个指针i,j让他们从后向前走
当没有碰到空格的时候,j先不动,i往前走,等到了i碰见空格时
我们截取后面的blue加入字符串中,然后继续走
等i走过空格时,我们需要让j过来,才能遍历下一个单词,然后依次循环
等到了最后 我们要确保字符串中没有首尾空格
代码
public String reverseWords(String s) {
s = s.trim();
int j=s.length()-1;
int i=j;
StringBuffer stringbuffer = new StringBuffer();
while(i>=0){
while(i>=0 && s.charAt(i) != ' '){
i--;
}
stringbuffer.append(s.substring(i+1,j+1)+" ");
while(i>=0 && s.charAt(i)==' '){
i--;
}
j=i;
}
return stringbuffer.toString().trim();
}