[英]Fast substring in scala
根據Java的substring()的時間復雜度 ,java的子字符串需要線性時間。 有沒有更快的方法(可能在某些情況下)? 我可能會建議使用迭代器,但是懷疑它也需要O(n)。
val s1: String = s.iterator.drop(5).mkString
但是迭代器上的多個操作比字符串上的相同操作要快,對嗎?
根據鏈接的問題,由於字符串始終由唯一的字符數組作為后盾,因此substring
不能比O(n)快。 您需要復制字符數據。
至於替代方案:至少會有一個運算為O(n)。 在您的示例中,這是mkString
,它在迭代器中收集字符並從中構建字符串。
但是,我不必為此擔心太多。 您正在使用高級語言這一事實意味着(應該意味着)對於您的特定任務,開發人員時間比CPU時間更有價值。 substring
也是...接受子字符串的規范方法,因此使用它可以使程序更具可讀性。
編輯:我也很喜歡這句話(來自這個答案 ): 如果n不會變大,則O(n)為O(1)。 我要擺脫的是:您不應該編寫效率低下的代碼,但是漸進式效率與實際效率並不相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.