如果我有2个字符串,例如: 匹配python中随机顺序的两个字符串
a = "hello"
b = "olhel"
我想使用正则表达式(或其他?)来查看两个字符串是否包含相同的字母。在我的例子中,a = b因为他们有相同的字母。这怎么能实现?
如果我有2个字符串,例如: 匹配python中随机顺序的两个字符串
a = "hello"
b = "olhel"
我想使用正则表达式(或其他?)来查看两个字符串是否包含相同的字母。在我的例子中,a = b因为他们有相同的字母。这怎么能实现?
a = "hello"
b = "olhel"
print sorted(a) == sorted(b)
哇,谢谢!我不相信我没有在谷歌中找到。 – 2010-09-30 00:29:57
在一个简单的例子中,像你的一样,它完美无瑕。但在我的hang子手游戏中,它做同样的事情(我打印字符串以检查它们是否相等),但它没有工作。你能告诉我什么是错的吗?代码:http://dl.dropbox.com/u/10141934/hangman.py(第230行) – 2010-09-30 01:05:19
您必须自己调试。打印出排序后的值并查看它们的不均匀性。案件?空白?不同的长度? – 2010-09-30 01:08:40
O(n)算法是创建每个字母的计数字典,然后比较字典。
在Python 2.7或更新这可以使用collections.Counter
做到:
>>> from collections import Counter
>>> Counter('hello') == Counter('olhel')
True
对于大多数Pythonic解决方案。 – 2010-09-30 00:39:14
@Rafe与流行语“Pythonic”的无意义的另一个例子。 – 2010-09-30 00:41:38
Pythonic如何毫无意义? – 2010-09-30 00:46:12
如果每个字母的计数可以忽略不计,你可以简单地使用'设置(一)==组(B)',它快于排序(a)==排序(b)' – satoru 2010-09-30 01:08:59
@Satoru Logic:如果是答案,我会投你的评论。我会自己发布,但那会很低俗。 – intuited 2010-09-30 01:40:19