给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
回文:指一个正读和反读都相同的字符串,例如,“aba” 是回文,而 “abc” 不是。
即通过双重遍历来获取目标字符串所有的子串,push 到一个数组里面,然后根据字符串长度排序,从最长字串开始循环校验,第一个为回文的子串就是我们要的结果
复杂度分析
因涉及一些执行语句,禁止写入,请联系客服获取
上面代码在目标字符串长度过大的时候,会超出时间限制,远远超出O(n^2) 的理想时间复杂度,这是因为过多的for 循环,js 自带函数使用过多造成的,优化一下
因涉及一些执行语句,禁止写入,请联系客服获取
看起来好多了,但是依然通不过Leecode 的测试,我觉得必须要把 slice split reverse join 这些函数都干掉才行,也可能 JS 语言效率确实慢一些
反转 S,使之变成 S'。找到 S 和 S' 之间最长的公共子串,判断是否是回文
复杂度分析
因涉及一些执行语句,禁止写入,请联系客服获取
遍历一遍字符串,以每个字符为中心向两边判断,是否为回文字符串
复杂度分析
因涉及一些执行语句,禁止写入,请联系客服获取
manacher 算法涉及中心拓展法、动态规划,是manacher 1975年发明出来用来解决最长回文子串的线性算法
因涉及一些执行语句,禁止写入,请联系客服获取
manacher 算法的工作,就是对上面代码中的辅助数组 p 进行优化,使时间复杂度的降到O(n^2)
因涉及一些执行语句,禁止写入,请联系客服获取
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者