题目描述:写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。
样例:
给出 s = "abcd",t="dcab",返回 true.
给出 s = "ab", t = "ab", 返回 true.
给出 s = "ab", t = "ac", 返回 false.
根据题意,所谓“变位词”就是说两点:
1. 两个字符串各自所拥有的字符种类完全一样(比如,都拥有"a", "b", "c","d", 且只拥有"a", "b", "c","d")。
2. 每种字符在每个字符串中出现的个数都一样。
之前有一道“比较字符串”的问题(详见:点击打开链接),那个题里面,我们用了哈希表来解决判断两个字符串是否是包含关系。
这道题跟“比较字符串”一样,都可以使用这种方法。所以我不详细讲了,不会的请打开前面给出的链接。
还是用哈希表来存储其中一个字符串的字符以及相应的个数,再遍历另一个字符串,对已经生成的哈希表检查。
代码如下:
class Solution: """ @param s: The first string @param b: The second string @return true or false """ def anagram(self, s, t): hash_table = {} for i in s: if i not in hash_table: hash_table[i] = 1 else: hash_table[i] += 1 for i in t: if i in hash_table: hash_table[i] -= 1 if hash_table[i] < 0: return False else: return False return True # write your code here