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