题目:
给定两个字符串串 s 和 t,编写⼀一个函数来判断 t 是否是 s 的字⺟母 异位词。
说明:
你可以假设字符串串只包含⼩小写字⺟母。
示例:
示例 1
输入: s = "anagram", t = "nagaram"
输出: true
示例 2
输入: s = "rat", t = "car"
输出: false
解题思路:
可以将26个英文字母都看成数组,如下表
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
s = anagram
t= nagaram
首先计算s中每个字母的个数得到下表
3 | 1 | 1 | 1 | 1 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
然后将t中的字母每遍历一个做减一操作,看最后结果是否为0
代码
用set()方法,过滤s字符串中重复的字母,生成彼此不重复的集合L。访问L集合,判断每个字母在s和t字符串中的数量是否相等,进行对应的操作
def heterosyllabicWords(string1,string2):
if len(string1) != len(string2):
return False
for i in set(string1):
if string1.count(i) != string2.count(i):
return False
return True
def heterosyllabicWords2(string1,string2):
return len(string1) == len(string2) and all([string1.count(i) == string2.count(i) for i in set(string1)])
if __name__ == '__main__':
heterosyllabicWords("anagram","nagaram")
heterosyllabicWords2("anagram","nagaram")