Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 字符串连接检查算法的运行时间_Performance_Algorithm_Runtime - Fatal编程技术网

Performance 字符串连接检查算法的运行时间

Performance 字符串连接检查算法的运行时间,performance,algorithm,runtime,Performance,Algorithm,Runtime,我编写了一个算法来检查字符串是否是数组中任意数量字符串的串联(同时能够多次使用字符串)。我很难弄清楚算法的运行时间到底是什么 我对照数组中的每个单词检查有问题的字符串,当我发现一个单词是从索引0开始的原始字符串的子字符串时,我也对照数组中的每个单词检查剩余的子字符串。所以我认为这是一个O(n^n),除非我遗漏了什么 def check_concat(str,substr,words) if substr == "" return false end words.each d

我编写了一个算法来检查字符串是否是数组中任意数量字符串的串联(同时能够多次使用字符串)。我很难弄清楚算法的运行时间到底是什么

我对照数组中的每个单词检查有问题的字符串,当我发现一个单词是从索引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个单词
。在最坏的情况下,需要用数组中的每个单词检查主字符串中的每个单词,即
mn
time。因此,函数的时间复杂度为
O(mn)


例如,主字符串是
“Hello”
。要检查的数组包含以下单词
“Hai”、“Fine”、“Hello”
。然后,该函数将需要总共15次比较。

如果我正确理解了您的算法,那么它的复杂性是否应该用输入字符串的长度(比如m)和数组的大小(n)来表示呢?我明白了,我没有考虑到这一点,谢谢。这个例子确实让我们更容易思考,谢谢!