📜  门| Gate IT 2008 |问题28(1)

📅  最后修改于: 2023-12-03 15:42:14.421000             🧑  作者: Mango

Gate IT 2008 - 问题28

问题描述:

编写一个函数 reverse_words,将输入的字符串中的每个单词翻转,单词之间用一个空格隔开。

例如,对于字符串 "hello world",函数应该返回 "olleh dlrow"。

函数接口:
def reverse_words(sentence: str) -> str:
    pass
参数说明:
  • sentence: str:输入的字符串,长度 $1\leqslant len(sentence) \leqslant 10^5$;
  • 返回字符串,翻转后的结果。
例子:
assert reverse_words("hello world") == "olleh dlrow"
assert reverse_words("Hello World") == "olleH dlroW"
assert reverse_words("  Hello   World  ") == "  olleH   dlroW  "
解题思路:
  1. 将字符串中的单词分割出来,逆序排列,再拼接回去。

  2. 可以使用Python中的split和join函数来实现。

解题代码:
def reverse_words(sentence: str) -> str:
    words = sentence.split()
    reversed_words = [word[::-1] for word in words]
    return " ".join(reversed_words)
时间复杂度和空间复杂度:
  • 时间复杂度:$O(N)$,其中 $N$ 是输入字符串的长度。
  • 空间复杂度:$O(N)$,需要开辟一个列表保存逆序后的单词。