小白学Java
Java后端
·04-26 22:50
Day 100 ✅ 今天做了: 1. 力扣5,最长回文子串 2. 复习jvm 3. 零代码生成平台项目进度+2(39/41) ⏰ 明天计划: 1. 刷力扣题 2. 复习mysql八股 3. 学习零代码生成平台项目 📚 今日感悟: 力扣5,最长回文子串 1. 我的思路:暴力,两层for循环进行判断。超时! `时间复杂度O(n*n*n),空间复杂度O(n)` 2. 思路2:动态规划,对于位置i到j,如果`dp[i][j]`是回文串并且`s[i-1]==s[j+1]`,那么`dp[i-1][j+1]`也是回文串。因此维护一个二维数组`dp[i][j]`用于表示位置i到j是否是回文串,外层循环固定子串长度,内层循环计算当前固定长度下的右边界,然后进行`s[i-1]==s[j+1]`的判断即可 `时间复杂度O(n*n),空间复杂度O(n*n)` 3. 思路3:中心拓展算法,如果中心点`dp[i][j]`可以构成回文串,则当`s[i-1]==s[j+1]`时`dp[i-1][j+1]`也可以,依次类推。那么就可以遍历字符串,每轮以i和i,i+1为中点向外拓展,选取两者最长的拓展长度当做本轮的最长长度即可,最后处理起始位置获取字符串即可 `时间复杂度O(n*n),空间复杂度O(1)`
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP