一、题目
力扣原题:https://leetcode-cn.com/problems/reverse-words-in-a-string/
二、API
class Solution {
public String reverseWords(String s) {
if (null == s) {
return s;
}
s = s.trim();
if (0 == s.length()) {
return s;
}
List<String> list = Arrays.asList(s.split("\\s+"));
Collections.reverse(list);
return String.join(" ", list);
}
}
- 时间复杂度:O(n)
- 空间复杂度:O(n)
三、反向遍历
class Solution {
public String reverseWords(String s) {
if (null == s) {
return s;
}
s = s.trim();
if (0 == s.length()) {
return s;
}
StringBuilder builder = new StringBuilder();
StringBuilder subBuilder = new StringBuilder();
for (int i = s.length() - 1; i >= 0;) {
// 找出一个完整的单词
while (i >= 0 && s.charAt(i) != ' ') {
subBuilder.append(s.charAt(i--));
}
// 删除多余空格
while (i >= 0 && s.charAt(i) == ' ') {
i--;
}
builder.append(subBuilder.reverse().toString());
builder.append(" ");
subBuilder.setLength(0);
}
// 删除最后的空格
builder.setLength(builder.length() - 1);
return builder.toString();
}
}
- 时间复杂度:O(n)
- 空间复杂度:O(n)