变形词
# coding:utf-8 ''' 解释:对于两个字符串A 和B,如果A 和B 中出现的字符种类相同且每种字符出现的次数相同,则A 和 B 互为变形词,检查两给定串是否互为变形词。 题目:给定两个字符串 A 和 B 及他们的长度,请返回一个 bool 值,代表他们是否互为变形词。 测试样例: “abc”,3,”bca”,3 返回: True ''' def f(s): d_num=dict.fromkeys(s,0) for i in s: d_num[i] += 1 return d_num def f2(s1,s2):
if s1 == None or s2 ==None or len(s1)!=len(s2):
return False d1=f(s1) for s in s2: if s in s1: d1[s] -= 1 if d1[s]<0: return False else: return False return True def isDeformation1(str1, str2): if str1 == None or str2 == None or len(str1) != len(str2): return False array = [0 for i in range(256)] for i in range(len(str1)):#迭代字符串,字符对应的ASCII,作为array数组的下标,每出现一次相同字符,对应下标的值增加1,进而记录字符出现的次数 array[ord(str1[i])] += 1#ord取ASCII码, for i in range(len(str2)): array[ord(str2[i])] -= 1 if array[ord(str2[i])] < 0: return False return True s1='aaa|bc' s2='abaac-' print(f2(s1,s2)) print isDeformation1(s1,s2)