判断两个字符串是否互为变形词

任务:判断两个字符串是否互为变形词

任务描述:对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词。设计一个算法,检查两个给定字符串是否互为变形词。

输入:”abc”, 3, “bca”, 3
返回: true

思路:利用python内建字典数据结构给字符串A和B分别建立自己的空字典,分别遍历他们的字符,用字典的key保存出现过的字符,用字典对应的value保存该字符出现的次数。若A,B分别遍历完后得到的字典相同,则A和B互为变形词。

python实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Transform:
def chkTransform(self, A, lena, B, lenb):
# write code here
if lena != lenb:
return False
dicA = self.counter(A, lena)
dicB = self.counter(B, lenb)
if dicA != dicB:
return False
else:
return True

def counter(self, A, lena):
dic = {}
for i in A:
if i not in dic:
dic[i] = 1
else:
dic[i] += 1
return dic
Python内置计数器

查询资料后发现Python内建模块中有相关计数器的实现

1
2
3
4
5
6
7
>>> from collections import Counter
>>> c = Counter()
>>> for i in "sdfsdfawerxcvwdf":
... c[i] += 1
...
>>> c
Counter({'d': 3, 'f': 3, 's': 2, 'w': 2, 'a': 1, 'c': 1, 'e': 1, 'r': 1, 'v': 1, 'x': 1})