前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最长回文子串-动态规划解法

最长回文子串-动态规划解法

原创
作者头像
_春华秋实
发布2023-08-31 17:48:29
1610
发布2023-08-31 17:48:29
举报
文章被收录于专栏:_春华秋实_春华秋实

题目:

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

代码语言:javascript
复制
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

Golang 代码示例

上面三行对应循环三次的执行逻辑
上面三行对应循环三次的执行逻辑

逻辑视频讲解

代码语言:javascript
复制
func longestPalindrome(s string) string {
	//根据字符长度初始化一个二维数组,下标对应字幕的位置
	dp := make([][]bool, len(s))
	for i := 0; i < len(s); i++ {
		dp[i] = make([]bool, len(s))
	}
	ans := ""
	for i := 0; i < len(s); i++ {
		for k := 0; k <= i; k++ {
			//前后字符相同 && 中间的字符也是回文串
			dp[i][k] = s[i] == s[k] && (i-1 < k+1 || dp[i-1][k+1])
			if dp[i][k] && i-k+1 > len(ans) {
				ans = s[k : i+1]
			}
		}
	}
	return ans
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • Golang 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档