Skip to content
On this page

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){
            // 寻找单词的开头
            while(i >= 0 && s.charAt(i) != ' ') i--;
            // 添加单词和空格
            res.append(s.substring(i+1,j+1)+ " ");
            // 寻找下一个单词的末尾
            while(i >= 0 && s.charAt(i) == ' ') i--;
            // 记录尾部索引
            j = i;
        }
        return res.toString().trim();
    }
}
  • API
class Solution {
    public String reverseWords(String s) {
        String[] strs = s.trim().split(" "); // 删除首尾空格,分割字符串
        StringBuilder res = new StringBuilder();
        for(int i = strs.length - 1; i >= 0; i--) { // 倒序遍历单词列表
            if(strs[i].equals("")) continue; // 遇到空单词则跳过
            res.append(strs[i] + " "); // 将单词拼接至 StringBuilder
        }
        return res.toString().trim(); // 转化为字符串,删除尾部空格,并返回
    }
}