程式設計師面試一百題-13-第一個只出現一次的字元
阿新 • • 發佈:2018-12-16
1-題目
:
在一個字串中找到第一個只出現一次的字元。
2-示例
:
輸入abaccdeff
,輸出b
。
3-思路
:
第一遍掃描時,每碰到一個字元,在雜湊表中找到對應的項並把出現的次數加一;這樣在進行第二次掃描時,直接從雜湊表中得到每個字元出現的次數,打印出第一個次數為1的字元即可。
4-程式碼
:
#include <iostream> using namespace std; //true表示存在,false表示不存在或者字串為空 bool FirstNotRepeatedChar(char *pString) { //若字串為空 if (!pString) { return false; } //建立一個簡單的雜湊表,陣列的下標對應每一個字元,256的大小對應256個字元 const int tableSize = 256; unsigned int hashTable[tableSize]; for (unsigned int i = 0; i < tableSize) { //養成初始化的好習慣 hashTable = 0; } //第一次遍歷字串 char *pHashKey = pString; while (*pHashKey != '\0') { //得到每個字元出現的次數 hashTable[*pHashKey]++; pHashKey++ } //第二次遍歷字串 pHashKey = pString; while (*pHashKey != '\0') { //若存在出現次數為1的字元,則列印並返回true if (hashTable[*pHashKey] == 1) { cout << "First not repeated char is : " << *pHashKey << "."; return true; } pHashKey++; } //若不存在出現次數為1的字元,則返回false return false; }