我寫了一個算法來檢查一個字符串是否是數組中任意數量字符串的連接(同時能夠多次使用一個字符串)。我無法準確計算算法的運行時間。字符串連接檢查算法的運行時間
我檢查數組中的每個單詞的字符串,當我發現一個字是從索引0開始的原始字符串的子字符串時,我檢查數組中每個單詞的剩餘子字符串。所以我認爲這是一個O(n^n),除非我失去了一些東西。
def check_concat(str,substr,words)
if substr == ""
return false
end
words.each do |word|
if word == substr && str != substr
return true
end
if substr.index(word) == 0
if check_concat(str,substr[word.length..-1],words)
return true
end
end
end
return false
end
如果我正確地理解了你的算法,它的複雜性應該不是用輸入字符串的長度(比如m)*和*數組的大小(n)來表示的嗎? – Gian 2013-05-13 07:05:25
我明白了,沒有考慮過,謝謝。 – tanookiben 2013-05-13 07:16:48