什么是哈希表?
哈希表是根据关键码的值而直接进行访问的数据结构。
(数组就是一张哈希表)
哈希表的作用:一般哈希表都是用来快速判断一个元素是否出现在集合中。
题目:给定两个字符串 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;
}
}