两个字符串是变位词

题目描述:写出一个函数 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


你可能感兴趣的:(两个字符串是变位词)