You need to enable JavaScript to run this app. 使用Python集合操作从单词列表查找对称对的实现问题
优惠活动
大模型
产品
解决方案
定价
更多

使用Python集合操作从单词列表查找对称对的实现问题

解题方案

核心逻辑

你已经通过交集操作筛选出了所有存在对应反转词的单词集合s3,但每对对称单词会同时存在两个元素(比如am和ma都在s3中),只需要加一个去重规则即可:

  • 因为所有单词都是2字符,我们约定只输出原单词字典序小于其反转单词的配对,这样每对对称词只会被输出一次,不会出现重复
  • 集合的成员查询是O(1)操作,直接遍历集合处理即可,整体时间复杂度仍为O(n),完全符合题目要求

基于你现有代码的优化实现

不需要额外转列表,直接遍历交集集合s3处理即可:

def find_pairs(words):
    reverseWords = [i[::-1] for i in words]
    s1 = set(words)
    s2 = set(reverseWords)
    s3 = s1.intersection(s2)
    # 直接遍历集合输出,无转列表操作
    for word in s3:
        reverse_word = word[::-1]
        if word < reverse_word:
            print(f"{word} & {reverse_word}")

find_pairs(["am","at","ma","if","fi"])

运行输出

am & ma
if & fi

内容的提问来源于stack exchange,提问作者kiltannen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 14:27:02