【242. 有效的字母异位词】 LeetCode

题目描述:

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

说明:
你可以假设字符串只包含小写字母。

算法1:

根据ASCII码值来判定两个字符是否相等。因此我们可以借用数组下标来记录字符串中每一位字符的出现次数。

     例如:    字符串 n 中出现了 'r'  , r 的 ASCLL码值为  114 , 则在相应的下标的数组里记录一次 : 数组 a [ 114 ]  + = 1 ; 

                   字符串 m 中出现了 't'  , t 的 ASCLL码值为  116 , 则在相应的下标的数组里记录一次 : 数组 b [ 116 ]  + = 1 ; 

                   .......

                   两个字符串记录完毕以后,遍历 a , b 两个数组中相同下标的数组值是否都相等,即可判定两个字符串中的字符是否                     相同。

      

class Solution {
public:
 bool isAnagram(string n,string m){
    int s1,s2;
    int a[256] = {0};
    int b[256] = {0};
    if(n.size()==m.size()){     //如果两个字符串的长度不等,则一定不符合条件
        for(int i=0;i<n.size();i++){
           s1 = n.at(i);       //用 at() 来获取字符串中的某一位字符
           a[s1]+=1;       //记录在数组中
        }
        for(int i=0;i<m.size();i++){
           s2 = m.at(i);
           b[s2]+=1;
        }
        for(int i= 0;i<256;i++){
           if(a[i]==b[i]){ 
             //如果这对值相等,则什么都不做
        }
        else{
            return false;   //如果有一对值不相等,直接返回 false 
        }
    }
        return true;
  }
    
    return false;
}

int main(){
    string n,m;
    while(cin>>n>>m){
      cout<<isAnagram(n,m)<<endl;
    }
    return 0;
}

};

提交结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值