刚开始想复杂了,脑子里全是两次反转,最后发现两次反转太麻烦了 效率也低:
class Solution {
public String reverseWords(String s) {
if(s==null || s.length()==0){
return "";
}
String ss= s.trim();
//首先想到的是两次反转,第一次大反转后,遍历字符串,去掉空格 将每个单词进行反转。
StringBuilder strb = new StringBuilder(ss);
strb=strb.reverse();
int index=0;
boolean flag=false;
int left=0;
String[] strArr= strb.toString().split(" ");
String str="";
for(String temp:strArr){
if(temp.length()!=0){
StringBuilder tempb = new StringBuilder(temp);
tempb= tempb.reverse();
if(str.length()==0){
str=tempb+"";
}else{
str=str+" "+tempb;
}
}
}
return str;
}
}
使用split分割后倒序append拼接:很简单
class Solution {
public String reverseWords(String s) {
if(s==null || s.length()==0){
return "";
}
StringBuilder strb = new StringBuilder();
String[] strArr= s.trim().split(" ");
for(int i = strArr.length-1;i>=0;i--){
if(strArr[i].length()!=0){
strb.append(" "+strArr[i]);
}
}
return strb.toString().trim();
}
}