代码随想录--哈希表--有效的字母异位词题型
创始人
2025-05-29 03:23:06
0次

哈希表理论知识补充:

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。
但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。
如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!
https://www.programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%93%88%E5%B8%8C%E8%A1%A8

哈希表有3种数据结构:
①数组  ②set  ③map
一般数值不多且范围可控时用数组,数值比较多时用set,要key,value对应时用map。
std::unordered_set底层实现为哈希表,std::set 和std::multiset 的底层实现是红黑树,红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。
std::unordered_map 底层实现为哈希表,std::map 和std::multimap 的底层实现是红黑树。同理,std::map 和std::multimap 的key也是有序的(这个问题也经常作为面试题,考察对语言容器底层的理解)。
当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。
那么再来看一下map ,在map 是一个key value 的数据结构,map中,对key是有限制,对value没有限制的,因为key的存储方式使用红黑树实现的。

有效的字母异位词题型

遇到一个题目,感觉想要用哈希法的时候,先看看能不能用数组,能用数组就尽量用数组,因为数组比较快,你用set的话,你每次放这个key值,你还要做一次哈希运算做一个映射,比数组浪费时间,而且set里面的结构比数组复杂,相比之下用数组做映射更直接的运行速度也是更快的。

学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词

题目规定是小写字母,数值才26个,所以考虑用数组。我们先定义一个数组,并且都等于0。然后做一个for循环字符串s,如遇到a则hash[0]++,然后再做一个for循环字符串t,对上面得出的hash数组,如遇到a则hash[0]--,最终再循环判断得出的hash数组,如果字符串s,t是有效的字母异构词,则最终的hash数组都是0,如果有哪个等于1或者-1等等即不等于0的话就说明字符串s,t不是有效的字母异构词。

这里有点不大懂的是,字符串s如果遇到a则hash[0]++,如果遇到c则hash[2]++,这种对应怎么得出的?
如下图可知,相连的字母ASCLL码相差1,所以s[i]-‘a’,如果s[i]=a,则s[i]-‘a’=0,就是hash[0]++了呀,即字符串s中当前字符为a,那么hash[0]++,就把字母a与hash[0]对应起来了。同理如果s[i]是b,则为hash[1]。

 大致代码套路:

int hash[26]={0};
for(int i=0;i
     hash[s[i]-'a']++;
  }
for(int i=0;i
     hash[t[i]-'a']--;
   }
for(int i=0;i<26;i++){
    if(hash[i]!=0)return false;
   }
return true;

相关内容

热门资讯

一分钟了解透视器!清风手游透视... 一分钟了解透视器!清风手游透视器AI技巧,清风手游多功能竟然是有透视器技巧1、在清风手游插件功能辅助...
实测分享开挂!冰球突破开挂AI... 实测分享开挂!冰球突破开挂AI插件,冰球突破多功能切实有开挂插件1、超多福利:超高返利,海量正版游戏...
专业讨论辅助!老牌人辅助AI技... 专业讨论辅助!老牌人辅助AI技巧,老牌人多功能一贯真的有辅助技巧1、用户打开应用后不用登录就可以直接...
重大通报作弊器!朱雀大厅作弊器... 重大通报作弊器!朱雀大厅作弊器AI软件,朱雀大厅多功能切实真的是有作弊器软件1、打开软件启动之后找到...
玩家必用作弊器!兴动游戏作弊器... 玩家必用作弊器!兴动游戏作弊器AI教程,兴动游戏多功能果然是有作弊器教程1、玩家必用作弊器!兴动游戏...
一分钟了解开挂!鸿福休闲开挂A... 一分钟了解开挂!鸿福休闲开挂AI教程,鸿福休闲多功能原来存在有开挂教程1、这是跨平台的鸿福休闲轻量版...
一分钟揭秘作弊器!新老夫子作弊... 一分钟揭秘作弊器!新老夫子作弊器AI技巧,新老夫子多功能一直是有作弊器技巧亲,关键说明,新老夫子透视...
专业讨论外挂!掼蛋外挂AI方法... 专业讨论外挂!掼蛋外挂AI方法,掼蛋多功能原来存在有外挂方法1)掼蛋辅助插件:进一步探索掼蛋辅助大陆...
科普透视器!MG棋牌透视器AI... 您好,MG棋牌这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款...
科普辅助!微乐广西麻将辅助AI... 科普辅助!微乐广西麻将辅助AI软件,微乐广西麻将多功能好像真的是有辅助软件1、完成微乐广西麻将有辅助...