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 中
- 如果单词(从索引 0 到 i - 1)的子字符串连接 "*" 连接单词(从索引 i + 1 到末尾)存在于 s 中,则
- 对于单词中的每个索引 i 和单词 w,执行以下操作
- 返回 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
广告