# 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)