要解決的問題:使用一個字符串分割 - 時間複雜度?
給定一個非空字符串s和一個字符串數組wordArr含有的非空字列表 ,確定是否s時,可以分割成一個的 空格分隔序列或更多的詞典單詞。您可能 假定字典不包含重複的單詞。例如,給定s =「leetcode」,wordArr = [「leet」,「code」]。
返回true,因爲「leetcode」可以分段爲「leet code」。
在上面的問題,它會工作建立一個trie,每個字符串在wordArr
。然後,對於給定字符串s
中的每個字符,按照特里字母排序。如果一個trie分支終止,那麼這個子字符串是完整的,因此將剩餘的字符串傳遞給根,並遞歸地完成同樣的事情。
這應該是O(N)時間和O(N)空間是否正確?我問,因爲我正在處理的問題說這將是最佳方式的O(N^2)時間,我不知道我的方法有什麼問題。
例如,如果s = "hello"
和wordArr = ["he", "ll", "ee", "zz", "o"]
,然後"he"
會在字典樹的第一分支完成,"llo"
將被遞歸向上傳遞到根。然後,"ll"
將完成,因此"o"
被傳遞到trie的根。然後"o"
完成,這是s
的結尾,所以返回true。如果s
的末尾未完成,則返回false。
這是正確的嗎?
如果'wordArr'不包含不相交的單詞,可能會涉及回溯。假設'wordArr = [「lee」,「leet」,「code」]'。你會首先匹配'lee',然後浪費很多時間去尋找'tcode'的匹配項。 – chepner