题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
注意事项:
1 <= s.length,t.length <= 5 * 104s和t仅包含小写字母
示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
示例 2:输入: s = "rat", t = "car"
输出: false
分析:采用哈希表解题,创建一个哈希表,在s字符串字母出现时,对应位置+1;t字符串字母出现时,对应位置-1,最后遍历哈希表是否均为0。
代码如下:
bool isAnagram(char * s, char * t){
int hash[26]={0};
int len1 = strlen(s);
int len2 = strlen(t);
if(len1!=len2)
return false;
else
{
for(int i=0;i<len1;i++)
hash[s[i]-'a']++;
for(int i=0;i<len2;i++)
hash[t[i]-'a']--;
for(int i=0;i<26;i++)
{
if(hash[i]!=0)
return false;
}
}
return true;
}
bool isAnagram(char * s, char * t){
int hash[26]={0}; //创建哈希表
int len1 = strlen(s);
int len2 = strlen(t);
if(len1!=len2) //首先判断长度是否相同
return false;
else
{
for(int i=0;i<len1;i++)
hash[s[i]-'a']++;
for(int i=0;i<len2;i++)
hash[t[i]-'a']--;
for(int i=0;i<26;i++) //注意是遍历哈希表,并非两个字符串的长度
{
if(hash[i]!=0)
return false;
}
}
return true;
}
结果:

文章提供了一个C++实现的函数,用于判断两个字符串是否为字母异位词。通过建立一个哈希表统计每个字符串中字符的出现次数,如果两个字符串长度相等且哈希表所有计数均为0,则它们互为字母异位词。

570

被折叠的 条评论
为什么被折叠?



