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