【发布时间】:2023-03-24 05:42:01
【问题描述】:
function longestPalindromicSubstring(str) {
let longest = '';
for ( let i = 0; i < str.length; i++) {
let word1 = palindromeFinder(str, i, i );
let word2 = palindromeFinder(str, i, i+1);
longest = [ word1, word2, longest ].reduce( (long, word) => long.length > word.length ? long : word)
}
return longest;
}
function palindromeFinder(str, left, right) {
while ( left >= 0 && right < str.length && str[left] === str[right] ) {
left--;
right++;
}
return str.slice(left + 1, right)
}
我很确定时间复杂度是 O(n^2),因为主要的 for 循环乘以辅助函数中的循环。在for 循环中,我使用了reduce 函数,但它只对输入字符串中的每个元素执行2-3 次操作......我假设O(n^2) 是错误的吗?
我的主要问题是:这个函数O(1)的空间复杂度是多少?
我最多存储 3 个变量 longest, word1, word2,这样可以使其保持不变,对吗?
【问题讨论】:
标签: javascript time-complexity big-o space-complexity