LeetCode 打卡 Day9 — 最长回文子串
2022/1/15 23:34:32
本文主要是介绍LeetCode 打卡 Day9 — 最长回文子串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 题目
2. 解答
2.1 解 :动态规划
1)P(i,j) :布尔类型,表示 i 到 j 为回文字符串
2)S(i) :第 i 个字符
3)状态转移方程和边界条件分别如下
(1)状态转移方程:P(i,j) = P(i+1,j-1) [S(i) == S(j)]
(2)边界条件:P(i,i) 和 P(i,i+1)
func longestPalindrome(s string) string { var slen int = len(s) p := make([][]bool, slen) //p 记录是否为回文字符 for i:= range p{ p[i] = make([]bool, slen) } for i:=0; i<slen; i++{ //长度为1的字符串均为回文字符串 p[i][i] = true } // 从长度为2开始循环 for L:=2; L<=slen; L++{ // 从最左侧开始 for i:=0; i<slen-L+1; i++{ j := i+L-1 if j>=slen{ break } if s[i]==s[j]{ if (j-i) < 3{ p[i][j] = true }else if p[i+1][j-1]{ p[i][j] = true }else{ p[i][j]=false } }else{ p[i][j] = false } } } maxlen := 0 start := 0 for i:=0; i<slen; i++{ for j:=i; j<slen; j++{ if p[i][j] && (maxlen<(j-i+1)){ start = i maxlen = j-i+1 } } } return s[start:start+maxlen] }
提交记录如下:
这篇关于LeetCode 打卡 Day9 — 最长回文子串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享