挑战介绍
实现一个算法来识别一个字符串 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函数比较返回