Java后端
·04-26 22:50Day 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)`
4
2
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
