力扣242有效的字母异位词C++

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

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

 知识补充:哈希(hash,中文:散列;音译:哈希),是一种算法思想,又称散列算法、哈希函数、散列函数等。哈希函数能指导任何一种数据,构造出一种储存结构,这种储存结构能够通过某种函数使得元素的储存位置和数据本身的值(一般称之为key值)能够建立一种映射关系,这样在查找数据时就可以通过同一个哈希函数通过key值迅速找到元素的位置。这种查找思想类似于数组的随机访问,它的时间复杂度为O ( 1 ) O(1)O(1)。不同于以往,即便是红黑树,它的查找时间复杂度也是O ( l o g 2 N ) ) O(log_2N))O(log 2N))。原因是不论是顺序结构还是平衡树中,元素的key值和储存之间没有映射关系,因此在查找元素时必须以key值进行若干次比较,而这恰恰增加了时间复杂度。map和set底层都是用二叉搜索树实现的,因而他们都是有序的。而unordered_set和unorder_map中的元素都是无序的,原因是它们底层都使用了哈希思想实现。前者能使用双向迭代器,后者是单向迭代器。

解析:本题将s中的字符放入哈希表中,并且求出每个字符的个数,其次,在哈希表中寻找t中的元素,如果找到就把元素个数-1(if(_map.find(t[i]) != _map.end() && _map[t[i]]>0)

 {

              _map[t[i]]--;

          }

 )

注意:还应考虑起始s和t的个数,如果不相等,直接返回false。

代码:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值