剑指 Offer 58 - I. 翻转单词顺序


剑指 Offer 58 - I. 翻转单词顺序

解题思路

这题可以理解为反转数组,只不过数组是个字符串罢了,可以用双指针!

  • 倒序遍历字符串 s ,记录单词左右索引边界 i , j ;
  • 每确定一个单词的边界,则将其添加至单词列表 res ;
  • 最终,将单词列表拼接为字符串,并返回即可。

代码

class Solution {
        public String reverseWords(String s) {
        s = s.trim(); // 删除首尾空格
        int r = s.length() - 1;
        int l = r;
        StringBuilder res = new StringBuilder();
        while (l >= 0) {
            //从右往左搜索到第一个空格后跳出
            while (l >= 0 && s.charAt(l) != ' ') {
                l--;
            }
            //单词和单词间要有空格
            res.append(s.substring(l + 1, r + 1)+ " ");
            // 跳过单词间空格
            while (l >= 0 && s.charAt(l) == ' ') {
                l--;
            }
            r = l;
        }
        return res.toString().trim(); // 转化为字符串并返回
    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录