首页 > 其他 > 详细

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

时间:2015-09-15 14:14:03      阅读:374      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!