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 @ 2023-02-20 22:06  kknothing  阅读(21)  评论(0)    收藏  举报