如何解决这种回文算法的时空复杂性?
有人可以告诉我该算法的时间和空间复杂度吗?基本上,该函数接受一个字符串,如果它是回文(向后与向前相同),则该函数必须返回true;否则,则必须返回false。
我认为两者都是 O(n),但是如果我错了,请纠正我。
function isPalindrome(string) {
var reversing = string.split("").reverse().join("")
return string === reversing
}
解决方法
您的函数在时间和空间上的复杂度为 O(string.length),因为它构造了一个字符数组,然后构造了一个新字符串,这些字符串的字符顺序相反,长度与原始字符串。比较这些字符串具有相同的时间复杂度。
但是请注意,这仅适用于单个单词,但不适用于完整的短语:可以双向使用相同字母但不一定具有相同间距读取的短语也是回文。
这是替代版本:
function isPalindrome(string) {
string = string.replace(/ /g,"");
var reverse = string.split("").reverse().join("");
return string === reverse;
}
此函数的时间和空间复杂度与 O(string.length)相同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。