腾讯五十题 反转字符串中的单词III

题目链接
方法一:

class Solution {
    public String reverseWords(String s) {
        //先将字符串用空格划分成字符串数组
        String[] strs = s.split(" ");
        StringBuffer buffer = new StringBuffer();
        //将每一个字符串反转后追加到buffer中并用空格隔开
        for(int i=0;i<strs.length;i++){
            buffer.append(new StringBuffer(strs[i]).reverse());
            buffer.append(" ");
        }
        //最后会多一个空格,用trim()去掉
        return buffer.toString().trim();
    }
}

方法二:局部反转

class Solution {
    public String reverseWords(String s) {
        char[] arr = s.toCharArray();
        int n = arr.length;
        int left = 0,right = 0;
        while(right <= n) {
            if(right == n ||arr[right] == ' ') {
                reverseString(arr, left, right -1);
                left = right + 1;
            }
            right++;     
        }
        return new String(arr);
    }
    public void reverseString(char[] s,int left, int right) {
        while(left < right) {
            s[left] ^= s[right];
            s[right] ^= s[left];
            s[left] ^= s[right];
            left++;
            right--;
        }
    }
}

posted @   蹇爱黄  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示