(LeetCode)Java 求解最长回文子串

文章目录

    • 一、题解
    • 二、常规理解
    • 三、简单理解
    • 四、总结

一、题解

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例1:

输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。

示例2:

输入: “cbbd”
输出: “bb”

二、常规理解

思路就是创建一个二维数组,boolean[][] flag, flag[i][j] 表示字符串第 i 到 j 是否是回文。

边界:字符串长度为1 是为 TRUE

最优子结构(假设flag[i][j]表示字符串i到j的最长回文串):flag[i][j] = max{flag[i+1][j-1],j-i}

状态转换:

flag[i][i] = true
flag[i][j] = max{flag[i+1][j-1],j-i}

由于判断flag[i][j]时,要保证

你可能感兴趣的:(冲刺大厂之,Java,刷题笔记,leetcode,字符串,动态规划,java,算法)