输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
示例 1:
输入: "the sky is blue"
输出: "blue is sky the"
示例 2:
输入: " hello world! "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: "a good example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
注意: 本题与主站 151 题相同:https://leetcode-cn.com/problems/reverse-words-in-a-string/
注意: 此题对比原题有改动
按空格分割字符串后逆序。
class Solution:
def reverseWords(self, s: str) -> str:
if s is None:
return s
return ' '.join(list(filter(lambda x: x != '', s.strip(' ').split(' ')))[::-1])
class Solution {
public String reverseWords(String s) {
if (s == null || s.length() == 0) {
return s;
}
String[] words = s.split("\\s+");
StringBuilder sb = new StringBuilder();
int len = words.length;
for (int i = len - 1; i >= 0; --i) {
if (!"".equals(words[i])) {
sb.append(words[i]).append(" ");
}
}
s = sb.toString();
len = s.length();
return len > 0 ? s.substring(0, len - 1) : "";
}
}
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.split(' ').reduce((acc,cur)=>cur !== '' ? acc.concat(cur) : acc,[]).reverse().join(' ')
};