方法1
1.思路:
2.代码:
class Solution {
public String reverseWords(String s) {
s = s.trim();
String[] str = s.split(" ");
String res = "";
for(int i = str.length - 1; i >= 0; i--){
if("".equals(str[i]))
continue;
String temp = "";
for (int j = 0; j < str[i].length(); j++){
temp += str[i].substring(j, j+1);
}
if(i > 0){
res = res + temp + " ";
}else {
res = res + temp;
}
}
return res;
}
}
3.复杂度分析:时间0(mn),m为分割后的数组长度,n为数组元素平均长度。空间0(mn),每次拼接都会创建新对象。
方法2:
1.思路:用string api代替手工翻转和连接。分割采用s.split("\s+"),其中\s表示回车,空格,换行等空白符。+表示任意个。String.join是以分隔符连接集合成员,再去掉最后一个分隔符
2.代码:
class Solution {
public String reverseWords(String s) {
s = s.trim();
List<String>list = Arrays.asList(s.split("\\s+"));
Collections.reverse(list);
return String.join(" ", list);
}
}
3.复杂度分析:时间0(n),空间0(n)。n为串的长度。