Python 字谜检查器
通过比较 Python 中的字符组成来检查两个字符串是否是字谜。
概述
如果两个字符串以相同的频率包含相同的字符,但排列顺序不同(例如“listen”和“silent”),则它们是字谜词。
检查字谜的一种优雅方法是清理字符串(去除空格和小写字母),对它们的字符进行排序,并验证排序后的列表是否相同。
这种排序方法的执行时间为 O(k log k),其中 k 是字符串长度,这对于短文本检查来说是最佳的。
代码和执行输出
通过字母排序检查单词配对的字谜状态。
anagram.py
在编辑器中尝试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”来计算字母频率,而不是排序,并比较结果频率图。