输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
解题思路:
可以将原数组通过空格分割成字符串数组,根据题意可以知道,需要将字符串数组后面的元素移到前面去。
代码:
public String reverseWords(String s) {
String[] ss = s.trim().split(" ");
StringBuilder ans = new StringBuilder();
for (int i = ss.length - 1; i >= 0; i--) {
if ("".equals(ss[i])) {
continue;
}
ans.append(ss[i]).append(" ");
}
return ans.toString().trim();
}
复杂度分析
- 时间复杂度$O(N)$:总体为线性时间复杂度。
split()
方法:$O(N)$。
- 空间复杂度$O(N)$:字符串数组占线性大小的额外空间。
评论区