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;
}