Re: [闲聊] 每日LeetCode

楼主: ZooseWu (N5)   2023-10-27 15:47:17
5. Longest Palindromic Substring
给一个字串s,回传最长的子字串,其顺序跟倒序长一样。
Input: s = "babad"
Output: "bab" 或 "aba"
老实说这一关我想超级久
能不能用排序、DP、树什么的去简化计算方法
后来想半天还是想不到 决定硬尻
以每个字符为中心往左右偏移
遇到两边字符不同就停止
最后输出最大的子字串
中途有遇到几个坑
1.字串有可能是奇数跟偶数个 例如output:"aba" "bb"
一开始没考虑到偶数个的情况
2.整个字串本身就是答案 例如input: "abcdedcba"
我一开始是一直往两边遇到字符相异再把index-1做成子字串去比
但是如果全部都符合他反而不会输出结果
后来是改成先判断index+1是不是相同 如果相同就继续往前比
解完之后看别人的答案,靠北跟我解法一样。原来真的就是我想太多。
TS code:
function longestPalindrome (s: string): string {
const getLongestSubString = (l: number, r: number): string => {
let lIndex = l
let rIndex = r
while (lIndex >= 0 && rIndex < s.length && s[lIndex - 1] === s[rIndex +
1]) {
lIndex
作者: wwndbk (黑人问号)   2023-10-27 15:48:00
我用这个方法会timeout欸用rust写timeout c++不会 很神奇看解法很多人是用Manacher's algorithm
作者: JIWP (JIWP)   2023-10-27 15:49:00
这题我记得要用马拉车算法
楼主: ZooseWu (N5)   2023-10-27 16:38:00
我研究一下你们讲的是什么 没听过

Links booklink

Contact Us: admin [ a t ] ucptt.com