反转单词顺序
题目描述:
解题思路
Java代码实现
class Solution {
public String reverseWords(String s) {
// 1.去掉首尾的空格
s.trim();
// 2.定义两个指针方便截取字符串
int fast = s.length() - 1;
int slow = fast;
// 2.1 定义一个StringBuffer用来存储截取出来的字符串
StringBuffer result = new StringBuffer();
while (fast >= 0) {
// 3.循环的使fast前进,遇到空格跳出循环,注意:一定要加fast>=0的判断,不然当扫描到第一个字母时,前面没有空格了
while (fast >= 0 && s.charAt(fast) != ' '){
fast--;
}
// 4.将截取出来的单词存到结果集中,注:后面要加个空格
result.append(s.substring(fast+1,slow+1) + " ");
// 5.当提取出一个单词后,循环的前进指针,排除多余空格,遇到非空格跳出循环,并使slow=fast,重复前面的步骤开始第二个单词的提取
while (fast >= 0 && s.charAt(fast) == ' '){
fast--;
}
slow = fast;
}
// 6.最后将StringBuffer转换成String并除去多余的空格,因为每个单词后面都加了一个空格,但是最后一个单词后面不需要空格,应该去掉
return result.toString().trim();
}
}
知识点总结
- StringBuilder :字符串变量,可以调用里面的方法操作字符串
- StringBuilder.subString(start,end):截取start位置到end-1位置的字符串
- String.trim() :去掉字符串首尾的空格
PS:若文章有误,欢迎留言指正!