有效字母异位词C++解法

1.有效字母异位词

有效字母异位词指的是两个字符串组成的数字或者字符是相同的,顺序无所谓,但是内容一定要是相同的,例如s="abcd",t="bdca",则这两个字符串是有效字符异位词,但是如果s="abcd",t="bdcsa",则这两个字符不是有效字符异位词。

2.第一种解法:用哈希数组进行求解

思路:定义一个数组,将其中一个字符串映射到数组中,用这个数组来记录字符串中字母出现的次数,

1.遍历字符串s,将字符串的作为数组的下标,记录出现的次数

2.遍历字符串t,将字符串的作为数组的下标,进行减减

3.最后遍历数组,只要数组中的所有值都为0,则为有效字母异位词。

 bool isAnagram(string s, string t){
    int arr=[26]={0};//进行初始化数组
    for(int i=0;i<s.size();i++){
    arr[s[i]-'a']++;  //会自动转换为数值,将字符串作为数组的下标,记录出现的次数
}
    for(int i=0;i<t.size();i++){
    arr[t[i]-'a']++;  //同样也会自动转换为数组,将字符串作为数组的下标,一旦出现就减减
 }
      //只要最后数组arr中的数值都为0的话,那么两个字符串就是有效字母异位词
    for(int i=0;i<arr.size();i++){
    if(arr[i]!=0){
    return false;
}
}
return true;
}

2.第一种解法:对字符串进行排序,直接比较即可(较为简单)

解题思路:

1.因为不知道两个字符串的长度,长度不同也不是有效字母异位词,因此要先进行长度的判断

2.对两个字符串进行排序

3.因为前端已经经过长度的判断,所以这里的长度一定是一样的,所有遍历的时候要以哪个字符串位标准都是可以的,其次对排好序的字符串进行一一比较即可

 bool isAnagram(string s, string t){
     if(s.size()!=t.size())return false;
     sort(s.begin(),s.end())
     sort(t.begin(),t.end())
    for(int i=0;i<s.size();i++){
        if(s[i]!=t[i]){
    return false;
}    
}
return true;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值