剑指 Offer 58 - I. 翻转单词顺序
思路:双指针从后往前遍历,根据第一个遇到的空格划分单词,使用StringBuilder拼接。
贴一下从后往前最后一个单词怎么拼接:
1.如果首位为字母,while(i >= 0 && s.charAt(i) != ' '),i为-1时进行拼接然后跳出大循环。
2.如果首位为空格,也类似,只是不用拼接。
剑指 Offer 58 - I. 翻转单词顺序
class Solution { public String reverseWords(String s) { //首先去除首首尾空格 s = s.trim(); int i = s.length() - 1, j = i; StringBuilder res = new StringBuilder(); while(i >= 0){ //必须要加i>=0,因为第0位不为空格,i会越界 while(i >= 0 && s.charAt(i) != ' ') i--; res.append(s.substring(i + 1, j + 1) + " "); //同理,第0位为空格会越界 while(i >= 0 && s.charAt(i) == ' ') i--; j = i; } //添加trim因为每次拼接最后加上了" ",会多一个空格 return res.toString().trim(); } }