1. 程式人生 > >【劍指】面試題50 字串中第一個只出現一次的字元

【劍指】面試題50 字串中第一個只出現一次的字元

演算法思想
       我們可以考慮實現一個簡單的雜湊表,字元是一個長度為8的資料型別,因此共有256中可能。於是我們建立一個長度為256的陣列,每個字母根據其ASCII嗎值作為陣列的下標對應陣列的一個數字,而陣列中儲存的每個字元出現的次數,這樣我們建立了一個大小為256、以字元ASCII碼值為鍵值的雜湊表
      

char FirstNotRepeatingChar(string str) {
    if (str.c_str() == NULL)
        return '\0';
    const int tablesize = 256;
    unsigned int
hashTable[tablesize] = { 0 }; const char* key = str.c_str(); while (*key != '\0'){ hashTable[*key]++; key++; } key = str.c_str(); while (*key != '\0'){ if (hashTable[*key] == 1) return *key; key++; } return '\0'; }