2010-09-30 46 views
2

如果我有2个字符串,例如: 匹配python中随机顺序的两个字符串

a = "hello" 
b = "olhel" 

我想使用正则表达式(或其他?)来查看两个字符串是否包含相同的字母。在我的例子中,a = b因为他们有相同的字母。这怎么能实现?

+2

如果每个字母的计数可以忽略不计,你可以简单地使用'设置(一)==组(B)',它快于排序(a)==排序(b)' – satoru 2010-09-30 01:08:59

+0

@Satoru Logic:如果是答案,我会投你的评论。我会自己发布,但那会很低俗。 – intuited 2010-09-30 01:40:19

回答

10
a = "hello" 
b = "olhel" 
print sorted(a) == sorted(b) 
+0

哇,谢谢!我不相信我没有在谷歌中找到。 – 2010-09-30 00:29:57

+0

在一个简单的例子中,像你的一样,它完美无瑕。但在我的hang子手游戏中,它做同样的事情(我打印字符串以检查它们是否相等),但它没有工作。你能告诉我什么是错的吗?代码:http://dl.dropbox.com/u/10141934/hangman.py(第230行) – 2010-09-30 01:05:19

+0

您必须自己调试。打印出排序后的值并查看它们的不均匀性。案件?空白?不同的长度? – 2010-09-30 01:08:40

4

O(n)算法是创建每个字母的计数字典,然后比较字典。

在Python 2.7或更新这可以使用collections.Counter做到:

>>> from collections import Counter 
>>> Counter('hello') == Counter('olhel') 
True 
+0

对于大多数Pythonic解决方案。 – 2010-09-30 00:39:14

+0

@Rafe与流行语“Pythonic”的无意义的另一个例子。 – 2010-09-30 00:41:38

+1

Pythonic如何毫无意义? – 2010-09-30 00:46:12