Java LeetCode 151. 翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。
说明:
无空格字符构成一个 单词 。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 1:
输入:“the sky is blue”
输出:"blue is sky the"

犹豫递归是从后往前推,可以利用这个性质,进行反转

class Solution {
    
    
    public String reverseWords(String s) {
    
    
        StringBuilder strs = new StringBuilder();
        rev(s,0,strs);
        return strs.toString().trim();
    }
    public void rev(String s,int left,StringBuilder sss){
    
    
        while(left<s.length()&&s.charAt(left)==' '){
    
    
            left++;
        }
        if(left==s.length()){
    
    
            return;
        }
        int right = left;
        while(right<s.length()&&s.charAt(right)!=' '){
    
    
            right++;
        }
        
        rev(s,right,sss);

        sss.append(s,left,right).append(' ');


    }
}

猜你喜欢

转载自blog.csdn.net/sakura_wmh/article/details/113092433
今日推荐