比如在字符串“aabccdeff”中第一次出现一次的字符是‘b’
此题是Google面试题,要在短时间内想到时间复杂度是N的解法不简单,本人提供一种相对犀利的解法:
#include<stdio.h>
#include<stdlib.h>
char first(char *str)
{
int a[255];
char *p = str;
memset(a,0,255*sizeof(int));
while(*p != '\0')
{
a[*p]++;
p++;
}
p = str;
while(*p != '\0')
{
if(a[*p] == 1)
return *p;
p++;
}
return '\0';
}
int main(int argc,char *argv[])
{
char *str = "aabccdeff";
printf("%c\n",first(str));
return 0;
}