2015-03-02 102 views
0

我想用算法對長字符串做散列。散列字符串的最佳算法

我需要這是唯一的,因爲我記錄更改,並且不想保留整個字符串(可能從300字節到1000字節)。我認爲MD5(也許是沙 - 我不知道),但是這個算法是否「承諾」不會有任何算法的重複(即使是算一個天文學機會 - 這個機會是什麼?)。

是否有更好的算法,尤其是對於字符串值(所有可讀的ASCII值,大多數是字母和所有數字,包括' - '和'。')?

謝謝:)

+3

哈希散列是定義不唯一。如果算法將兩個不同的字符串散列到相同的值,您的方法仍然必須工作,儘管機會很小。可以? – 2015-03-02 09:48:14

+0

如果內存確實是一個問題(是嗎?你有沒有測量它?),但你仍然想要精確匹配,哈希將不會幫助你,哈希是由定義有損。您可以嘗試的是無損壓縮算法,如[LZO](http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Oberhumer)。 – biziclop 2015-03-02 11:10:26

回答

0

您可以嘗試拉賓,卡普算法(RK)
Here是TopCoder的教程
你可以學到很多從here