String 如何比较两个字符串,其中元素的顺序无关紧要
我在寻找一个函数,可以比较两个字符串,但元素的顺序无关紧要。例如:String 如何比较两个字符串,其中元素的顺序无关紧要,string,python-2.7,compare,String,Python 2.7,Compare,我在寻找一个函数,可以比较两个字符串,但元素的顺序无关紧要。例如: 'abc' == 'bca' True python有这样的内置函数吗?6对于较小的字符串,可以在两个字符串上调用sorted: def is_equal(a, b): return len(a) == len(b) and sorted(a) == sorted(b) 要使排序(a)=排序(b)为真,两个字符串必须具有相同的长度和相同的字符: 或者,如果字符串长度相同,则使用计数器dict计算频率: from c
'abc' == 'bca'
True
python有这样的内置函数吗?6对于较小的字符串,可以在两个字符串上调用sorted:
def is_equal(a, b):
return len(a) == len(b) and sorted(a) == sorted(b)
要使排序(a)=排序(b)为真,两个字符串必须具有相同的长度和相同的字符:
或者,如果字符串长度相同,则使用计数器
dict计算频率:
from collections import Counter
def is_equal(a, b):
return len(a) == len(b) and Counter(a) == Counter(b)
如果字符串的长度不同,那么它们就不能相等,如果它们是相同的,那么a中的所有字符都必须在b中,并且频率必须相同。解决方案是
O(n)
,而不是O(n log n)
调用sorted6对于较小的字符串,可以在两个字符串上调用sorted:
def is_equal(a, b):
return len(a) == len(b) and sorted(a) == sorted(b)
要使排序(a)=排序(b)为真,两个字符串必须具有相同的长度和相同的字符:
或者,如果字符串长度相同,则使用计数器
dict计算频率:
from collections import Counter
def is_equal(a, b):
return len(a) == len(b) and Counter(a) == Counter(b)
如果字符串的长度不同,那么它们就不能相等,如果它们是相同的,那么a中的所有字符都必须在b中,并且频率必须相同。解决方案是
O(n)
,而不是O(n log n)
在python中调用排序的字符串是返回字符串中字符的可重用项。与任何iterable一样,它们可以用排序的包装。如果比较这些包装器,本质上就是比较两个字符串中的字符是否相同,而不管它们的原始顺序:
>>> s = 'abc'
>>> t = 'bca'
>>> s == t
False
>>> sorted(s) == sorted(t)
True
python中的字符串是返回字符串中字符的可编辑项。与任何iterable一样,它们可以用排序的包装。如果比较这些包装器,本质上就是比较两个字符串中的字符是否相同,而不管它们的原始顺序:
>>> s = 'abc'
>>> t = 'bca'
>>> s == t
False
>>> sorted(s) == sorted(t)
True
每个字母出现的次数是否也必须匹配?set
比较在这里可能很有用(set('abc')==set('bca')
),但如果重复性很重要,则不可用。那么aabc
和bac
呢?aabc与bac的比较应该是false。每个字母的出现次数也必须匹配吗?一个set
比较在这里可能有用(set('abc')==set('bca')
),但如果重复性很重要的话就没有了。那么aabc
和bac
呢?aabc与bac的比较应该是错误的。如果重复性很重要,这是一个比我更有效的解决方案。这是完美的。谢谢。如果重复的问题,这是一个比我的更有效的解决方案。这是完美的。非常感谢。