给定一个字符串,逐个翻转字符串中的每个单词。说明:
- 无空格字符构成一个 单词 。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 1:
输入:"the sky is blue"
输出:"blue is sky the"
示例 2:
输入:" hello world! "
输出:"world! hello"
解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入:"a good example"
输出:"example good a"
解释:如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 4:
输入:s = " Bob Loves Alice "
输出:"Alice Loves Bob"
示例 5:
输入:s = "Alice does not even like bob"
输出:"bob like even not does Alice"
提示:
- 1 <= s.length <= 104
- s 包含英文大小写字母、数字和空格 ’ ’
- s 中 至少存在一个 单词
题意很简单,就是将给定的字符串中的非空字符翻转后,以正常的字符串格式返回。结果字符串的首尾不能有空格,每个单词之间使用一个空格分隔。Java解题代码如下:
class Solution {
public String reverseWords(String s) {
String[] strs = s.trim().split(" ");
String res = new String();
for(int i = strs.length - 1; i >= 0; i--) {
if(!strs[i].equals("")){
res = res + strs[i] + " ";
}
}
return res.trim();
}
}
或者在拼接字符串使用StringBuilder或者StringBuffer,最后返回时调用toString()。
class Solution {
public String reverseWords(String s) {
String[] strs = s.trim().split(" ");
StringBuilder res = new StringBuilder();
for(int i = strs.length - 1; i >= 0; i--) {
if(!strs[i].equals("")){
res.append(strs[i] + " ");
}
}
return res.toString().trim();
}
}
Python解决起来就更简单了,调用split()按空格分隔后,每个元素的前后都没有空格。最后,直接使用join()拼接空格返回即可:
class Solution:
def reverseWords(self, s: str) -> str:
if not str: return '' # 非必须
return ' '.join(s.strip().split()[::-1])
本文讲解如何实现字符串中单词逐个翻转,保持正确的单词间隔,处理多余空格,并通过示例和代码展示Java、Python解决方案。
4579

被折叠的 条评论
为什么被折叠?



