本文介紹了在Java中,String()的Big-O是什么?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我正在處理一個(gè)項(xiàng)目,需要優(yōu)化運(yùn)行時(shí)間。String.contains()
運(yùn)行時(shí)是否與TreeSet.contains()
相同,即O(LogN)?
我問(wèn)這個(gè)問(wèn)題的原因是我正在構(gòu)建一個(gè)TreeMap<String, TreeSet<Song>>
,其中的歌曲包含一串歌詞。根據(jù)效率的不同,我正在考慮在歌曲中包含一組歌詞,并對(duì)其運(yùn)行搜索,而不是對(duì)字符串進(jìn)行搜索。
推薦答案
最著名的算法之一是Boyer-Moore字符串搜索算法,雖然它在最好的情況下可以提供次線性性能。
在Java中使用哪種算法取決于您下載的實(shí)現(xiàn)。例如,OpenJDK似乎使用了一種運(yùn)行在O(Nm)內(nèi)的樸素算法,在最好的情況下,它的性能是線性的。參見(jiàn)行1770-1806here。
這篇關(guān)于在Java中,String()的Big-O是什么?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,