Python 字谜检查器

通过比较 Python 中的字符组成来检查两个字符串是否是字谜。

在编辑器中尝试

概述

如果两个字符串以相同的频率包含相同的字符,但排列顺序不同(例如“listen”和“silent”),则它们是字谜词。

检查字谜的一种优雅方法是清理字符串(去除空格和小写字母),对它们的字符进行排序,并验证排序后的列表是否相同。

这种排序方法的执行时间为 O(k log k),其中 k 是字符串长度,这对于短文本检查来说是最佳的。

代码和执行输出

通过字母排序检查单词配对的字谜状态。

def is_anagram(str1, str2):
    s1 = sorted(str1.lower().replace(" ", ""))
    s2 = sorted(str2.lower().replace(" ", ""))
    return s1 == s2

word1, word2 = "listen", "silent"
print(f"Are '{word1}' and '{word2}' anagrams? {is_anagram(word1, word2)}")

word3, word4 = "hello", "world"
print(f"Are '{word3}' and '{word4}' anagrams? {is_anagram(word3, word4)}")
端子输出
Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? False

逐步实施

  • 文本分析和语言比较引擎
  • 字符串谜题设计和验证器系统
  • 技术面试编码任务

常见问题解答

有没有办法在 O(n) 线性时间内解决这个问题?

是的!您可以使用哈希图或 Python 的“collections.Counter”来计算字母频率,而不是排序,并比较结果频率图。

相关主题