给定一个字符串,逐个翻转字符串中的每个单词。
说明:
无空格字符构成一个 单词 。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 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(' ');
}
}