题目及解答来源
这里主要对哈希表和有效字母异位词做出自己的理解!
哈希表
通常来说哈希表也称为散列表,这官方介绍部分可以去网上查一查,我把它简单理解为一个数组,哈希表的关键码就是数组的索引下标,通过下标去访问数组中的元素
主要解决的问题
快速判断一个元素是否出现集合里
不足之处
对于需要检索的值比较多,就不再适合了,需要用到set和map.
哈希函数
通常是将值通过hashcode才用特定编码转化为数值,然后在哈希表上进行索引,另外需要注意的是hashcode的值一定要小于tablesize,否则会产生哈希碰撞。
哈希碰撞
两个或者多个值在有一个索引下标中就会产生,解决方法有拉链法和线性探测法
有效字母异位词
目的:就是判断给定两个字符中的字符是否完全一致(此处我们考虑的是全是小写字母)
思路:
1、先定义一个哈希数组a[26],初始值都是0,将a~z的字母位置都对应下标0到25,通过遍历的方式,对第一个字符串去统计出现字母的次数,出现后就累加
2、再对第二个字符串进行如上减减的操作,只要出现字母就在原有数组的条件下 ,对相应的值进行减1
3、最后再遍历,判定数组是否有非零值,若有则说明不是字母异位词,反之则是
遇到的问题:
1、 这会涉及到一个什么时候加1的条件,即当数组中字母减‘a'为真就实行加1,在第二次遍历则实行减1
2、对题的概念理解还没有完全掌握,后面还得多练习几遍
3、解决哈希碰撞的方法没有看懂,查资料补上