172 - 151 翻转字符串里面的单词 - 044

题目

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

示例 1:

输入: "the sky is blue" 输出: "blue is sky the"

示例 2:

输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:

输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

  • 无空格字符构成一个单词。

  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

  • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

解答

  1. 字符串进来后前后去掉空格

  2. 空格拆开

  3. 翻转字符串,用空格连起来

    如果一个字符是空,那么就跳过

class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.strip()
        words = s.split(" ")
        return " ".join([word for word in reversed(words) if word != ""])

Runtime: 32 ms, faster than 75.81% of Python3 online submissions for Reverse Words in a String.

Memory Usage: 13.3 MB, less than 100.00% of Python3 online submissions for Reverse Words in a String.

var reverseWords = function(s) {
  s = s.trim().split(" ").reverse()
  let ans = ""
  for (const item of s) {
    if (item) {
      ans += item + " "
    }
  }
  return ans.slice(0, ans.length - 1)
};

Runtime: 72 ms, faster than 13.52% of JavaScript online submissions for Reverse Words in a String.

Memory Usage: 34.4 MB, less than 90.91% of JavaScript online submissions for Reverse Words in a String.

func reverseWords(s string) string {
    s = strings.Trim(s, " ")
    if s == "" {
        return s
    }
    words := strings.Split(s, " ")
    var ans string
    for i := len(words) - 1; i >= 0; i-- {
        if words[i] != "" {
            ans += words[i] + " "
        }
    }
    return ans[0 : len(ans)-1]
}

Runtime: 4 ms, faster than 49.48% of Go online submissions for Reverse Words in a String.

Memory Usage: 8.4 MB, less than 50.00% of Go online submissions for Reverse Words in a String.

Last updated

Was this helpful?