题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
一、解题思路
由题意得,以下几种返回false:
1.两个字符串长度不一样
2.字母不同或者字母相同但是出现频率不一样
由此我们针对第二种,新建一个数组,长度为字母个数
由加减运算来看字符串中出现的频率
二、代码
代码如下(示例):
bool isAnagram(char * s, char * t){
int i;
int slen=strlen(s);
int tlen=strlen(t);
int a[26]={0};
if(slen!=tlen) return false;
for(i=0;i<slen;i++)
{
a[s[i]-'a']++;//s中出现的字母用加来记录
}
for(i=0;i<tlen;i++)
{
a[t[i]-'a']--;//t中用减来记录
}
for(i=0;i<26;i++)
{
if(a[i]!=0)//当这个数组都等于零时说明s与t中的字母个数和频率都相等
{
return false;
}
}
return true;
}