本文介紹了在哈希表中創(chuàng)建字符串的哈希值的時(shí)間復(fù)雜性的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
通常說(shuō),在哈希表中插入和查找字符串是O(1)。但是字符串的散列鍵是如何生成的呢?為什么不考慮O(L),字符串的長(zhǎng)度?
我很清楚為什么對(duì)于整數(shù),它是O(1),而對(duì)于字符串,它不是。
我確實(shí)理解為什么在一般情況下,插入哈希表是O(1),但我對(duì)插入哈希表之前的步驟感到困惑:生成哈希值。
在Java中生成字符串的散列鍵的方式與在C++中生成unordered_map的方式有什么不同嗎?
謝謝。
推薦答案
在哈希表中插入EQUTE是O(1),因?yàn)樗诒碇械?em>元素?cái)?shù)中是常量。
這個(gè)上下文中的”O(1)”并沒(méi)有聲明計(jì)算散列的速度有多快。如果這方面的努力在某種程度上有所增長(zhǎng),那就是它的方式。然而,我發(fā)現(xiàn)一個(gè)像樣的(即”適合此應(yīng)用程序”)散列函數(shù)的復(fù)雜性不太可能在散列對(duì)象的”大小”(即我們的字符串示例中的長(zhǎng)度)中比線性的要差。
這篇關(guān)于在哈希表中創(chuàng)建字符串的哈希值的時(shí)間復(fù)雜性的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,






