码迷,mamicode.com
首页 > 其他好文 > 详细

[动态规划]最长回文子串

时间:2015-09-15 14:16:27      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

求一个字符串的最长回文子串,返回这个子串。

这个题目适合用动态规划的方式求解:

技术分享

代码实现:

string longestPalindrome(string s) 
{
	int size = s.size();
	int dp[1000][1000] = {0};
	int left = 0;
	int right = 0;
	int len = 0;
	
	for(int j = 0; j < size; ++j)
	{
		for(int i = 0; i < j; ++i)
		{
			if(j - i < 2)
			{
				dp[i][j] = (s[i] == s[j]);
			}
			else
			{
				dp[i][j] = (s[i] == s[j]) && dp[i + 1][j - 1];
			}
			
			if(dp[i][j] && len < j - i + 1)
			{
				len = j - i + 1;
				left = i;
				right = j;
			}
		}//for
		
		dp[j][j] = 1;
	}//for
	
	return s.substr(left, right - left + 1);
}

  

[动态规划]最长回文子串

标签:

原文地址:http://www.cnblogs.com/stemon/p/4809900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!