1. 题目
2. 思路
(1) 双指针法
- 先在字符串两端各加一个空格方便操作。
- 从后往前遍历字符串,首先让fast指针寻找单词的下一个空格,然后让slow指针指向该空格,再让fast指针寻找单词的前一个空格,最后取子串进行拼接。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public String reverseWords(String s) {
s = " " + s + " ";
int fast = s.length() - 1;
int slow;
StringBuilder res = new StringBuilder();
while (fast >= 0) {
while (fast >= 0 && s.charAt(fast) == ' ') {
fast--;
}
slow = fast + 1;
while (fast >= 0 && s.charAt(fast) != ' ') {
fast--;
}
if (fast >= 0) {
res.append(s, fast + 1, slow);
res.append(" ");
}
}
if (res.length() == 0) {
return new String();
}
return res.substring(0, res.length() - 1);
}
}