我编写了一个算法来检查一个字符串是否是数组中任意数量的字符串的串联(同时能够多次使用一个字符串)。我很难弄清楚算法的运行时间到底是什么。
我针对数组中的每个单词检查有问题的字符串,当我找到一个从索引 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