在字串中找到乙個只出現一次的字元。如輸入「abaccdeff」 輸出結果為'b'。
最直觀的想法就是從頭開始掃瞄這個字串中的每個字元。當訪問到某個字元的時候拿這個字元和後面的每個字元相比較,如果在後面沒有發現重複的字元,則該字元就是只出現一次的字元,不過這種方法時間複雜度是o(n*n)。
我們可以定義乙個雜湊表,雜湊表的鍵值是字元,而值是數字。然後掃瞄字串兩次,第一次掃瞄字串時,每掃瞄到乙個字元的時候,就在雜湊表的對應項中把次數加1.接下來第二次掃瞄時,每掃瞄到乙個字元就從雜湊表中得到該字元的個數。
我們建立乙個長度為256的陣列,因為char型別嘛,這種方法的時間複雜度是o(n)。
//// 《劍指offer——名企面試官精講典型程式設計題》**
// 著作權所有者:何海濤
#include #include char firstnotrepeatingchar(char* pstring)
{ if(pstring == null)
return '\0';
const int tablesize = 256;
unsigned int hashtable[tablesize];
for(unsigned int i = 0; i
第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元。如輸入 abaccdeff,則輸 出b。分析 這道題是 2006年google的一道筆試題。看到這道題時,最直觀的想法是從頭開始掃瞄這個字串中的每個字元。當訪問 到某字元時拿這個字元和後面的每個字元相比較,如果在後面沒有發現重複的字 符,則該字元就是只出...
第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元,並輸出它在字串中的位置。如輸入 abaccdeff,則輸出 b 1。定義乙個256長度的陣列,乙個用來記錄字元出現的次數。然後在遍歷字元陣列,如果該字元出現了一次,輸出並結束,否則繼續。include using namespace std 在乙個字串中...
第乙個只出現一次的字元
1.問題描述 在字串中找出第乙個只出現一次的字元。例如輸入abaccdeff,則輸出 b。來自 劍指offer 2.分析 我們可以用乙個容器來存放 對應的字元和出現次數 雜湊表 這裡僅僅用陣列來簡單的模擬了一下 第一次掃瞄時將出現的次數存放在表中,第二次掃瞄時掃瞄到次數為1的字元並返回該字元即可。表...