您的位置:首页 > 其它

算法题目---第一个只出现一次的字符

2017-07-31 09:06 239 查看
在字符中找出第一个只出现一次的字符。

如输入"abaccdeff",则输出'b'

char FirstNotRepeat(char* pString)

{

    if(pString == NULL)

        return '\0';

    

    const int tableSize = 256;

    unsigned int hashTable[tableSize];

    for(unsigned int i = 0; i < tableSize;++i)

        hashTable[i] = 0;

    

    char* pHashKey = pString;

    while(*(pHashKey) != '\0')

        hashTable[*(pHashKey++)]++;

    

    pHashKey = pString;

    while(*pHashKey != '\0')

    {

        if(hashTable[*pHashKey] == 1)

            return *pHashKey;

        pHashKey++;

    }

    return '\0';

}

void Test(char* pString, char expected)

{

    if(FirstNotRepeat(pString) == expected)

        printf("Test passed.\n");

    else

        printf("Test failed.\n");

}

int main()

{

      Test("google", 'l');

        Test("aabccdbd", '\0');

         Test("abcdefg", 'a');

      Test(NULL, '\0');

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: