题解 | #第一个只出现一次的字符#

第一个只出现一次的字符

http://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c

C语言求解第一个出现的字符

解题思路

对于字符串google,这种重复字符串一般借助hash表实现,先遍历统计所有字母的频率存储到hash表,第二遍遍历寻找频率为1的序号即可。

 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param str string字符串 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int FirstNotRepeatingChar(char* str ) {
//最大范围字母区间
    int maxrange='z'-'A';
    int *hash=(int *)malloc(sizeof(int)*maxrange);
    for(int i=0;i<strlen(str);i++){
        hash[str[i]-'A']++;
    }
    for(int i=0;i<strlen(str);i++)
        if(hash[str[i]-'A']==1)
            return i;
    return -1;
}
全部评论
后文直接对hash数组取值,那么int *hash=(int *)malloc(sizeof(int)*maxrange);换成int *hash=(int *)calloc(maxrange,sizeof(int));进行0初始化是不是更好呢?
点赞 回复 分享
发布于 2022-06-19 12:54

相关推荐

06-07 19:59
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务