哈希表

28 阅读1分钟

什么是哈希表?

哈希表是根据关键码的值而直接进行访问的数据结构。
(数组就是一张哈希表)
哈希表的作用:一般哈希表都是用来快速判断一个元素是否出现在集合中。
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意: 若 s 和 t **中每个字符出现的次数都相同,则称 s 和 t **互为字母异位词。

  • 解题思路
    题目需要统计字符集合中的字符出现的次数,因此考虑使用哈希表。
    而数组就是一种特殊的哈希表,因此使用数组对字符串中出现的字符进行记录。 先要统计第一个字符串s中的字符出现的次数,因为共有26个英文字符,所以可以设置一个长度为26的数组,字符串中的字符可以映射成数组的下标,数组的值为对应的下标(字符)出现的次数。
    使用数组统计了第一个字符串的字符个数后,再和第二个字符串进行比较即可。
    比较过程:字符t中出现字符,将该字符在数组中的个数减一。
    最后判断数组是否为空,若为空,则字符串s和字符串t互为字母异位词。

  • 代码

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] words = new int[26];
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            words[chars[i] - 'a'] ++;
        }
        char[] chars1 = t.toCharArray();
        for (int i = 0; i < chars1.length; i++) {
            words[chars1[i] - 'a'] --;
        }

        for (int i = 0; i < words.length; i++) {
            if (words[i] != 0){
                return false;
            }
        }
        return true;
    }
}