C语言求第一个不重复的字符

解题思路

不妨对于一个输入流 google而言,求字符重复问题 一般使用hash算法,那么不妨声明一个hash数组,当第一个字符g,hash[g]++,第二个字符 hash[o]++ ,以此类推,怎么得到第一个不重复的字符呢?如果字符不重复,那么肯定hash[X]=1,因此直接从字符串的第一个遍历,判断其hash是否为1,如果到结尾都不为1,说明都重复,直接返回#

 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param ch char字符型 
 * @return 无
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
static int hash[26]={0};
static char strIn[1000];
static int top=0;
void Insert(char ch ) {
    // write code here
    //逐个读取字符
    strIn[top++]=ch;
    
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param 无 
 * @return char字符型
 */
char FirstAppearingOnce() {
    // write code here
    //计算当前字符的hash
    hash[strIn[top-1]-'a']++;
    
    //从字符串第一个遍历
    for(int i=0;i<top;i++)
    //当前字符只有一个 返回字符
        if(hash[strIn[i]-'a']==1)
            return strIn[i];
    //没有不重复字符
    return '#';
    
}