LeetCode242有效的字母异位词

在这里插入图片描述
思路:
本质是要查看一个元素是否在一个集合里,直接使用哈希数组,创建一个26长度的整形数组,初始值均设为0,数组下标从0-25,表示字母a-z,先遍历s字符串,记录s中已有的字母,出现一个则对应下标数组元素值++,在遍历t字符串,对应下标数组元素–,等于做一个逆运算,最后遍历哈希数组,如果和初始状态一致(值均为0),说明s,t的字母均相同,如果不一致则一定不全相同

bool isAnagram(char* s, char* t)
{
    //1.创建一个长度为26的空数组
    int hash[26];
    //2.读取字符串s并记录到hash中
    int i=0,j=0;
    while(s[i])
    {
        //
        int k=0;
        k=s[i]-'a';
        hash[k]+=1;//在该字母对应下标值+1,比如,字母‘a’对应hash[0],hash[0]++;
        i++;
    }
    while(t[j])
    {
        //
        int k=0;
        k=t[j]-'a';
        hash[k]-=1;
        j++;
    }
    for(int k=0;k<26;k++)
    {
        if(hash[k]!=0) return false;
    }
    return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值