题目
题解
API调用
直接API选手了
class Solution {
public String reverseWords(String s) {
s=s.trim();//去掉首尾空格
List<String> strs=Arrays.asList(s.split("\\s+"));//空格分隔
Collections.reverse(strs);
return String.join(" ",strs);
}
}
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
栈
用栈取代Collections.reverse()
来颠倒单词
单词读入栈,再出栈组成字符串
class Solution {
public String reverseWords(String s) {
int start=0,end=s.length()-1;
while(s.charAt(start)==' ')
start++;
while(s.charAt(end)==' ')
end--;
StringBuilder word=new StringBuilder();
Stack<String>stack=new Stack<>();
for(int i=start;i<end+1;i++){
char ch=s.charAt(i);
if(ch==' '&&word.length()!=0){
stack.push(word.toString());
word.setLength(0);
}
else if(ch!=' ')
word.append(ch);
}
while(!stack.empty()){
word.append(" "+stack.pop());
}
return word.toString();
}
}
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)