Python 程序检查是否存在任意一对几乎相同的单词


假设我们有一个称为 words 的小写字符串列表,其中每个单词的长度相同。我们必须检查是否存在两个字符串仅在一个字符上有所不同。

因此,如果输入类似于 words = ["seed", "pick", "lick", "root", "live"],则输出将为 True,因为 "pick" 和 "lick" 几乎相同。

为了解决这个问题,我们将遵循以下步骤:

  • s := 一个新的集合
  • 对于 words 中的每个单词,执行以下操作
    • 对于单词中的每个索引 i 和单词 w,执行以下操作
      • 如果单词(从索引 0 到 i - 1)的子字符串连接 "*" 连接单词(从索引 i + 1 到末尾)存在于 s 中,则
        • 返回 True
      • 否则,
        • 将(单词(从索引 0 到 i-1)连接 "*" 连接单词(从索引 i + 1 到末尾))插入到 s 中
  • 返回 False

示例

让我们看看以下实现,以便更好地理解:

def solve(words):
   s = set()
   for word in words:
      for i, w in enumerate(word):
         if word[:i] + "*" + word[i + 1 :] in s:
            return True
         else:
            s.add(word[:i] + "*" + word[i + 1 :])

   return False

words = ["seed", "pick", "lick", "root", "live"]
print(solve(words))

输入

["seed", "pick", "lick", "root", "live"]

输出

True

更新于: 2021年10月14日

422 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告