在一个字符串中找到第一个只出现一次的字符

要想到用哈希表来解决问题

char FirstNotRepeatChar(char* pString)
{
    if (!pString)
        return '\0';

    const int tableSize = 256;   
    int hashTable[tableSize] = { 0 }; //存入数组,并初始化为0 

    char* pHashKey = pString;
    while (*(pHashKey) != '\0')
        hashTable[*(pHashKey++)]++;//统计个数

    while (*pString != '\0')
    {
        if (hashTable[*pString] == 1)
            return *pString;

        pString++;
    }
    return '\0';  //没有找到满足条件的字符,退出 
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////`const int N = 26;
int bit_map[N];

void findNoRepeat(char *src)
{
int pos;
char *str = src;
int i ,len = strlen(src);

//统计    
for(i = 0 ; i < len ;i ++)    
    bit_map[str[i]-'a'] ++;    

//从字符串开始遍历 其bit_map==1 那么就是结果    
for(i = 0 ; i < len ; i ++)    
{    
    if(bit_map[str[i]-'a'] == 1)    
    {    
        printf("%c",str[i]);    
        return ;    
    }    
}    

} `

你可能感兴趣的:(C++)