【发布时间】:2020-09-25 20:50:53
【问题描述】:
谁能告诉我这个算法的时间和空间复杂度?基本上,该函数接受一个字符串,如果它是回文则该函数必须返回 true(向后与向前相同),否则返回 false。
我认为两者都是 O(n),但如果我错了,请纠正我。
function isPalindrome(string) {
var reversing = string.split("").reverse().join("")
return string === reversing
}
【问题讨论】:
-
是的,两者都是 O(n)。
-
好吧,我不确定 O(n) 复杂性在这里是否可见,因为您实际上并没有实现 算法。您宁愿使用 String API,其代码也不会在此处显示。因此,仅从这段代码来看,它是 constant.. 但由于内部调用正在完成 O(n) 的工作,它不是恒定的.. 但这从这个问题中并不明显。通常,当您对时空复杂度感到好奇时,请尝试自己实现算法(或查看实现)。
-
我的意思是在幕后使用内置的 split、reverse 和 join 方法。
-
那么最好提供您正在检查的代码。不是每个人都会打开他们的 IDE,下载源代码并查看引擎盖下的实现。无论如何,我的建议仍然有效 - 不要实现这样的算法......因为你实际上并没有在这里实现任何算法。
-
另外,请始终添加您使用的语言的相应标签。
标签: algorithm time-complexity big-o palindrome space-complexity