Python 中反转字符串单词顺序的方法

任务目标

给定一个字符串,我们需要反转其中单词的顺序,但不需要改变单词本身。例如,对于 "Learning Python is easy",反转后的字符串应该是 "easy is Python Learning"(单词顺序颠倒)。

使用 split() 和 join()

在这个方法中,我们利用 INLINECODEd90f3dd3 将字符串拆分为单词列表,然后反转该列表,最后使用 INLINECODEb2bcf667 将它们重新组合成单个字符串。

Python

s = "Python is fun"
res = ‘ ‘.join(s.split()[::-1])
print(res)

Output

fun is Python

原理解析

  • s.split() 将字符串拆分为一个单词列表。
  • [::-1] 对单词列表进行切片反转操作。
  • ‘ ‘.join(...) 将反转后的单词拼接成一个字符串,单词之间用空格分隔。

使用循环遍历

这种方法通过手动以相反的顺序遍历单词列表,逐步构建反转后的字符串。当我们希望在代码中显式地控制整个过程时,这会非常有帮助。

Python

s = "Python is fun"
words = s.split()
res = ""

for word in reversed(words):
    res += word + " "

res = res.strip()
print(res)

Output

fun is Python

原理解析

  • s.split() 将字符串拆分为一个单词列表。
  • reversed(words) 创建一个迭代器,用于反向遍历列表。
  • 在循环内部,res += word + " " 将每个单词追加到结果字符串后面,并加上一个空格。
  • res.strip() 用于移除字符串末尾多余的空格。

使用 collections 中的 deque

对于较长的字符串,使用 deque(双端队列)是非常高效的,因为它允许我们在两端以 O(1) 的时间复杂度进行弹出操作。我们可以利用 pop() 方法来按相反的顺序获取单词。

Python

from collections import deque
s = "Python is fun"
words = deque(s.split())

res = ""
while words:
    res += words.pop() + " "

res = res.strip()
print(res)

Output

fun is Python

原理解析

  • deque(s.split()) 创建一个双端队列,以便快速从两端弹出元素。
  • words.pop() 从双端队列的末尾移除并返回一个单词。
  • res += ... 将获取到的单词追加到结果中,并加上空格。
  • res.strip() 清理末尾的空格。

使用栈(Stack)

这种方法利用(一种后进先出 LIFO 的数据结构)来反转单词的顺序。我们将所有单词压入栈中,然后依次弹出,从而得到逆序的结果。

Python

s = "Python is fun"
words = s.split()

stack = []
for word in words:
    stack.append(word)

res = ""
while stack:
    res += stack.pop() + " "

res = res.strip()
print(res)

Output

fun is Python

原理解析

  • stack.append(word) 将每个单词压入栈中。
  • stack.pop() 弹出最后压入的单词,从而实现了单词顺序的反转。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/25313.html
点赞
0.00 平均评分 (0% 分数) - 0