【算法题】第一个只出现一次的字符

来源:互联网 发布:校园网络舆情监管制度 编辑:程序博客网 时间:2024/06/10 04:05

使用哈希表记录字符次数

char FindNoRepeat(char * str){    if (str == NULL||*str=='\0')    {        return NULL;    }    hash_map<char, int> hashmap;    char *tmp = str;    while(*tmp!='\0')    {        ++hashmap[*tmp];        tmp++;    }    for (; *str != '\0';str++)    {        if (hashmap[*str] == 1)        {            return *str;        }    }    return '\0';}int main(){    char str[1024];    gets_s(str);    cout<<FindNoRepeat(str);    return 0;}

使用数组实现简单的哈希表:

char是长度为8位的数据类型,共256种可能,但是char类型默认是有符号的,需要转化为无符号型才能作为数组索引

char FindNoRepeat(char * str){    if (str == NULL||*str=='\0')    {        return NULL;    }    //hash_map<char, int> hashmap;    int hashmap[256];//char有256种可能取值    memset(&hashmap[0],0,sizeof(hashmap));    char *tmp = str;    while(*tmp!='\0')    {        ++hashmap[(unsigned char)*tmp];//char类型默认是有符号型        tmp++;    }    for (; *str != '\0';str++)    {        if (hashmap[(unsigned char)*str] == 1)        {            return *str;        }    }    return '\0';}int main(){    char str[1024];    gets_s(str);    cout<<FindNoRepeat(str);    return 0;}
原创粉丝点击