腾讯五十题 反转字符串中的单词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--;
        }
    }
}

本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/15876329.html
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号