151 - 翻转字符串里的单词 - Java + Python

    科技2022-08-30  100

    给定一个字符串,逐个翻转字符串中的每个单词。说明:

    无空格字符构成一个 单词 。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

    示例 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 <= 104s 包含英文大小写字母、数字和空格 ’ ’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])
    Processed: 0.020, SQL: 9