Permutation返回True或False python

时间:2013-11-18 02:35:21

标签: python permutation

我正在尝试创建一个函数isPerm(P),如果它是一个排列,则返回True,否则返回False

到目前为止,我已经:

def isPerm(P):
    if len(P) == list(range(P)):
        return True
    else:
        return False

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:6)

我能想到的最简单的方法是使用Counter

from collections import Counter

def isPerm(P, Q):
    return Counter(P) == Counter(Q)

print isPerm("oolegg", "google")

<强>输出

True

答案 1 :(得分:3)

对于简短列表,这是一个简单的解决方案。

def is_perm(a, b):
    return sorted(a) == sorted(b)

答案 2 :(得分:1)

天真的方法:对列表的克隆进行排序,然后将原始列表与已排序的克隆进行比较。如果相等,那么你有一个排列。但排序需要时间。

高效方法:创建一个字典/计数器,其项目设置为0并循环遍历列表,增加字典中的值。如果您在完成列表后得到0或更高的值,那么您就没有排列。