資料結構之陣列實現雜湊表應用總結篇

2021-07-05 06:28:51 字數 1569 閱讀 8244

題目描述:在乙個字串中找出第乙個只出現一次的字元,如輸入」abaccdeff」,輸出』b』.

解題思路:

用陣列建立乙個簡單的雜湊表來儲存每乙個字元出現的次數,再次遍歷字串,並用o(1)的時間判斷該字元是否只出現了一次

#include

#include

using

namespace

std;

char firstnotrepeatingchar(char *pstring)

//while(*pstring!='\0')//此時pstring已指向尾部

for(int i=0;ichar ch=pstring[i];

if(hashtable[ch]==1)

return ch;

}return

'\0';

}int main()

; char ch;

for(size_t i=0;iif(!hashtable[ch])

hashtable[ch]=1;

}for(size_t i=0;iif(!hashtable[ch])

result.push_back(ch);

}return result;

}string deletechar2(const

string &s1,const

string &s2)

return result;

}int main()

; char ch;

for(string::size_type i=0;iif(!hashtable[ch])

}}int main()

應用4:變位詞判斷

在英語中,如果兩個單詞中出現的字母相同,並且每個字母出現的次數也相同,那麼這兩個單詞互為變為詞(anagram),例如silent和listen,evil和live等為變位詞

解題思路:

建立乙個陣列實現的簡單雜湊表,用來統計字串出現的次數,當掃瞄到第乙個字串中的每一字元時,為雜湊表對應的項的值加1,接下來掃瞄第二個字串,掃瞄到每個字串時,為雜湊表中對應的項的值減1,如果掃瞄第二個字串後,雜湊表中所有的值都為0,那麼這兩個字串就互為變為詞

#include

#include

using

namespace

std;

bool anagram(const

string &s1,const

string &s2)

; char ch;

for(string::size_type i=0;ifor(string::size_type i=0;ifor(int j=0;j<256;j++)

if(hashtable[j] != 0)

return

false;

return

true;

}int main()

資料結構之雜湊表(雜湊表)

今天學的是資料結構的雜湊查詢篇,其他的查詢可參見以前的傳送門 以前的查詢都是基於比較關鍵字的基礎上,所以查詢的效率依賴於查詢過程中所進行的比較次數。理想的情況是不經過任何比較,通過計算就能直接得到記錄所在的儲存位址,雜湊查詢 hashed search 是基於上述思想的一種查詢方式。雜湊法又稱為雜湊...

資料結構之雜湊表的實現

之前研究stl原始碼的時候發現雜湊table底層是實現看起來實現的非常的簡潔,覺得自己去寫乙個雜湊表肯定也是很簡單的。但是,但是,但是我今天看了一下資料結構裡面的雜湊表的簡單實現,才發現其實也是有很多學問在裡面的,所以今天就打算自己實現一下,做乙個記錄,方便以後自己來檢視學習。因為雜湊表是會產生雜湊...

資料結構之雜湊表

雜湊表和雜湊化有乙個重要的概念是如何把關鍵字轉換成陣列下標,在雜湊表中這個轉換是通過雜湊函式來完成的。比如規定乙個單詞含有4個字元,對於單詞cats,我們採用 冪的連乘 的方式將乙個單詞對映成數字。因為有27個可能的字元,包括空格,所以冪採用27,則cats的數字下標是3 27 3 1 27 2 2...