第一步先把字符串转为字符数组,当然不转其实也可以,这里只是为了下面处理方便一点。
然后遍历,遇到空格就把空格之前的这些存进一个字符串数组里面。
存完之后,从后往前遍历字符串数组即可,注意处理临界情况。
//使用了split
class Solution {
public String reverseWords(String s) {
List<String> temp = new ArrayList<>();
for(String i : s.trim().split(" +")){
temp.add(i);
}
StringBuilder res =new StringBuilder();
for(int i=temp.size()-1;i>=0;i--){
res.append(temp.get(i));
if(i!=0)
res.append(" ");
}
return res.toString();
}
}
//不使用split
class Solution {
public String reverseWords(String s) {
char[] temp = s.toCharArray();
List<String> a = new ArrayList<>();
StringBuilder t = new StringBuilder();
for(int i=0;i<temp.length;i++){
if(temp[i]==' '){
if(t.length()!=0){
a.add(t.toString());
t.delete(0,t.length());
}
else continue;
}
else{
t.append(temp[i]);
}
}
if(t.length()!=0)
a.add(t.toString());
StringBuilder res = new StringBuilder();
for(int i=a.size()-1;i>0;i--){
res.append(a.get(i));
res.append(" ");
}
res.append(a.get(0));
return res.toString();
}
}