python百题大冲关-确定字符串是否是另一个的排列

DaLongggggg 等级 160 0 0

挑战介绍

实现一个算法来识别一个字符串 str2 是否是另一个字符串 str1 的排列。排列的解释如下:

如果将 str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2 ,那么就说字符串 str2 是字符串 str1 的排列。

本次挑战中,你需要在 permutation.py 文件中补充函数 is_permutation 的空缺部分。

is_permutation 函数接受两个参数,str1,str2 用于指定传入的两个字符串; is_permutation 函数输出一个布尔值,即 True 或者 False。 你需要补充 is_permutation 函数,使其可以识别 str2 字符串是否是 str1 字符串的排列。要求如下:

如果 str2 字符串是 str1 字符串的排列,则返回 True; 如果 str2 字符串不是 str1 字符串的排列,则返回 False; 如果传入的字符串有 None,或者有空字符串,则返回 False。

class Permutations(object):

    def is_permutation(self, str1, str2):
        if str1 is None or str2 is None:
            return False
        return sorted(str1) == sorted(str2)

c sorted() 函数对所有可迭代的对象进行排序操作 捕获

cmp(x,y)比较xy 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

菜鸟中两个例子

>>> L=[('b',2),('a',1),('c',3),('d',4)]
>>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))   # 利用cmp函数
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> sorted(L, key=lambda x:x[1])               # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

利用cmp函数和key时通过写入一个lambda表达式重新定义函数 可以参考Python的sort函数和sorted、lambda和cmp cmp(x[1],y[1])通过对比xy进行排序 字符替换ascii值对比 key中通过一个参数对比即a或1

  sorted(students, key=lambda s: s[2], reverse=True)       # 按降序
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

s:s[2]相当于定义函数 def 函数(s): return s[2]

判断str1 str2顺序 通过sorted函数比较返回

预览图
收藏
评论区