LeetCode:

题目描述:

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

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

解题思路:


法一:排序

调用库函数直接对两个字符串进行排序后,进行比较。返回其比较结果。

代码实现:

bool isAnagram(string s, string t) {

  sort(s.begin(),s.end());

   sort(t.begin(),t.end());

   return s==t;

}

法二:哈希

由于字符串中字母皆为26个英文字母,遍历第一个字母串使用数组建立一个小型哈希表,记录字母出现的频率。

再遍历第二个字符串,将其每个字母出现的频率在哈希表中进行搜索。返回该字母在哈希表中的值。

代码实现:

bool isAnagram(string s, string t) {

  vector< int> hash(26);

  if(s.size()!=t.size())

  {

    return false;

  }

  for(char& iter: s)

  {

  hash[iter-'a']++;

  }

  for(char& iter : t)

  {

    hash[iter-'a']--;

  if(hash[iter-'a']<0)

  {

    return false;

  }

  }

  return true;

}

 

posted @   kknothing  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示