剑指 Offer 58 - I. 翻转单词顺序
使用双指针的思路,即使用两个指针指向最后一个单词的开始和结束,然后使用substring() 进行切分,使用一个stringBuilder去存储结果即可。
需要注意的点:
-
首先是最后有空格的情况的处理,需要想使i指向最后一个部位空格的字符,这里用倒叙循环解决 输出时最后一个字符串后面没有空格的问题,简繁使用一个flag解决,即每次添加单词前先添加空格,但第一个单词前不添加 `总体代码如下:
class Solution { public String reverseWords(String s) { StringBuilder ans = new StringBuilder(); int i= s.length() - 1; int j ; while(i >= 0 && s.charAt(i) == )//找到不为空格的单词位 i--; boolean flag = true; //控制第一次不输入空格 while(i >= 0) { j = i; while(i >= 0 &&s.charAt(i) != ){ i--; } if(!flag) { ans.append( ); } flag = false; ans.append(s.substring(i + 1 ,j + 1)); while(i >= 0 && s.charAt(i) == )//跳过空格 i--; } return ans.toString(); } }