【发布时间】:2021-11-20 06:23:53
【问题描述】:
正在研究一个 leetcode 问题,并收到反馈说以下代码块的时间复杂度为 O(n^3)。有人可以帮我解释一下这是怎么回事吗?我数了两个循环,这让我相信这是 O(n^2)。
var longestPalindrome = function(s) {
let maxString = "";
let originalString = s;
let reversedString = s.split("").reverse().join("");
for (let i = 0; i < s.length; i++){
for (let j = i+1; j < s.length+1; j++){
if (i<j){
let iteratedSubstring = originalString.substring(i,j)
if (reversedString.includes(iteratedSubstring) && (iteratedSubstring === iteratedSubstring.split("").reverse().join("")) ){
iteratedSubstring.length > maxString.length ? maxString = iteratedSubstring: maxString = maxString
}
}
}
}
return maxString
}
【问题讨论】:
-
拆分和反向都在O(n)中
-
像
iteratedSubstring.split("").reverse().join("")这样的操作在子串的长度上是O(n)。
标签: javascript algorithm big-o