首页 > 试题广场 >

字母异位词的长度

[编程题]字母异位词的长度
  • 热度指数:1203 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现有两个仅由小写英文字母构成的字符串s, x,请判断它们是否为字母异位词,如果是的话,输出字母异位词的长度,不是的话,返回-1
注:如果每个字符出现的次数都相同,则称他们为字母异位词

数据范围:

示例1

输入

"aba","aa"

输出

-1

说明

第一个字符串与第二个字符串a出现的次数相同,而b出现的次数不同,不符合每个字符出现的次数都相同。故输出-1 
示例2

输入

"a","a"

输出

1

说明

第一个字符串与第二个字符串每个字符出现的次数都相同,故输出相同的长度为1 
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @param c string字符串 
 * @return int整型
 */
int isCongruent(char* s, char* c ) {
    // write code here
    if(strlen(s)!=strlen(c))
       return -1;
    int *hash1=(int *)calloc(26,sizeof(int));
    int *hash2=(int *)calloc(26,sizeof(int));
    for(int i=0;i<strlen(s);i++){
        hash1[s[i]-'a']+=1;
        hash2[c[i]-'a']+=1;
    }
    int count=0;
    for(int j=0;j<26;j++){
       
        if(hash1[j]!=hash2[j])
            return -1;
        if(hash1[j]!=0)
            count+=1;
            
    }
    return strlen(s);


}

发表于 2023-01-12 22:01:41 回复(0)