首页 > 其他 > 详细

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

时间:2021-03-27 12:15:26      阅读:20      评论:0      收藏:0      [点我收藏+]

思路:双指针从后往前遍历,根据第一个遇到的空格划分单词,使用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();
    }
}

 

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

原文:https://www.cnblogs.com/deerlet/p/14585246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!