转载请注明出处http://blog.csdn.net/yuanwei1314/article/details/40918315
题目:
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
思路:采用hash方式求解
代码如下:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/*采用hash方式,讲字符散列到数组中,遍历数组即可
时间复杂度O(n),空间复杂度O(1)
*/
char getFirstChar(char* S, int N)
{
/*由于字符,则只需要这些即可*/
char hash[256] = {0};
int i;
/*先hash*/
for (i=0; i<N; i++)
{
hash[S[i]]++;
}
/*查找第一个出现一次的字符*/
for (i=0; i<N; i++)
{
if (hash[S[i]] == 1)
{
return S[i];
}
}
return '\0';
}
int main()
{
char s[] = "aaab";
printf("%c\n", getFirstChar(s, strlen(s)));
return 0;
}