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

第一个只出现一次的字符

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

相关推荐

(010)&nbsp;5083&nbsp;3000&nbsp;这样的电话到底是哪家公司啊&nbsp;打过去是什么智联招聘&nbsp;救命🆘
小火柴燃烧吧:应该是你通过智联投的公司人事联系你了,或者是把招聘渠道交给智联的公司,你想想投过哪些公司
点赞 评论 收藏
分享
青春二本鼠鼠也能梦到好的offer吗:够是够,也只够
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务