Python中反转句子中的每个单词

2025年1月5日 | 阅读 5 分钟

在这个问题中,我们将给出一个由空格分隔的句子。我们的任务是在保持单词原始顺序的同时,反转句子中的每个单词。让我们看一些例子来理解这个问题。

输入: "We have to reverse each word of this string"

输出: "eW evah ot esrever hcae drow fo siht gnirts"

解决这个问题有多种方法。然而,在所有方法中,我们将使用Python内置的反转函数。

方法 - 1

在这种方法中,我们将首先分割我们的字符串。我们将使用内置的split()函数,它会从空格处分割字符串,并返回一个包含字符串分割部分的列表。然后,我们将使用for循环反转列表中的每个单词。最后,我们将使用内置的join()函数连接列表。

下面是这种方法的Python实现

代码

输出

eW evah ot esrever hcae drow fo siht gnirts

方法 - 2

在这种方法中,我们将使用Python的re模块。Re是Python的正则表达式模块。该模块的内置函数re.sub()可用于将原始句子中的每个单词替换为反转后的单词。我们将使用一个regex标签表达式来获取字符串的单个单词,反转它,然后使用这个单词来替换原始单词。

为了找到字符串的单个单词,我们将使用标签 \w+。这个标签匹配字母数字字符,并返回它们,直到找到一个非字母数字字符。例如,在字符串"This is Javatpoint"中。该标签将匹配"T"、"h"、"I"、"s",但空格" "不是字母数字,所以它会停止。因此,它将返回"This"作为匹配。它将重复相同的步骤,并返回"is"、"Javatpoint"。

下面是这种方法的实现

代码

输出

eW evah ot esrever hcae drow fo siht gnirts

方法 - 3

在这种方法中,我们将使用map函数来反转句子中的每个单词。我们将首先使用split函数分割句子,并获得单独单词的列表。然后,我们将使用切片运算符反转每个单词。

算法

  • 我们将从定义一个函数开始,该函数将句子作为其参数。然后,我们将使用split函数分割句子中的每个单词,并将单词存储在一个列表中。
  • 我们将创建一个lambda函数,它将使用map函数将切片运算符应用于列表中的每个单词。
  • 在获得反转的单词后,我们将使用join函数连接反转的单词,形成句子。

我们将返回这个反转单词的最终句子。

代码

输出

eW evah ot esrever hcae drow fo siht gnirts

时间复杂度: 这种方法的时间复杂度是非线性的。时间复杂度是非线性的,因为首先map函数将以O(n)的时间复杂度迭代列表中的每个元素,其中n是包含单个单词的列表的长度。然后,对于每个单词,切片运算符将花费O(m)的时间来反转特定单词,其中m是最大单词的长度。

辅助空间: 空间复杂度为O(n),因为我们使用了额外的空间来存储单个单词的列表。