当前位置:网站首页>面试题 01.02. 判定是否互为字符重排-辅助数组算法

面试题 01.02. 判定是否互为字符重排-辅助数组算法

2022-07-07 14:15:00 Mr Gao

面试题 01.02. 判定是否互为字符重排

给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:

输入: s1 = “abc”, s2 = “bca”
输出: true

示例 2:

输入: s1 = “abc”, s2 = “bad”
输出: false

对于这一题,其实比较简单,我们添加一个辅助数组去判断问题就可以了,做一个辅助数组,存储s1中各个字母的数量 ,然后,对s2中存储的字母数量进行相减,辅助数组最后存储各个字母数量都为0,返回true,否则返回false
解题代码如下:

bool CheckPermutation(char* s1, char* s2){
    
    int r[26];
    int i=0;
    for(i=0;i<26;i++){
    
        r[i]=0;
    }
    i=0;
    while(s1[i]!='\0'){
    
        r[s1[i]-'a']++;
        i++;
    }
    i=0;
    while(s2[i]!='\0'){
    
        r[s2[i]-'a']--;
        i++;
    }
     for(i=0;i<26;i++){
    
        if(r[i]!=0){
    
            return false;
        }

    }
    return true;

}
原网站

版权声明
本文为[Mr Gao]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_43327597/article/details/125656621