码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2021-03-29 12:24:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:空格   rds   length   string   amp   return   data   翻转   problem   

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

标签:空格   rds   length   string   amp   return   data   翻转   problem   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!