题解 | #翻转单词序列#

翻转单词序列

http://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3

使用类似数组向右移动K个位置的题的思路来实现字符串翻转 思路来源于代码随想录

public class Solution {
    public String ReverseSentence(String str) {
        // 先整体反转,然后在反转每个单词 时间:O(N),空间:O(1)
        // 1.反转整个字符串
        StringBuilder sb = new StringBuilder(str);
        reverseString(sb,0,str.length() - 1);
        // 2.反转每个单词
        reverseEachWord(sb);
        return sb.toString();
    }
    /**
    * 反转整个字符串
    */
    public void reverseString(StringBuilder sb,int start,int end){
        while(start < end){
            char temp = sb.charAt(start);
            sb.setCharAt(start,sb.charAt(end));
            sb.setCharAt(end,temp);
            start++;
            end--;
        }
        
    }
    
    public void reverseEachWord(StringBuilder sb){
        int start = 0;
        int end = 1;
        int n = sb.length();
        while(start < n){
            while(end < n && sb.charAt(end) != ' '){
                end++;
            }
            // 扭转单词
            reverseString(sb,start,end - 1);
            // 更新start和end
            start = end + 1;
            end = start + 1;
        }
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
本2硕9,秋招不想努力海投了
小何和:行情再不好也不可能拒绝你,不可能只要双9的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务