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

最长回文串:LeetCode:Longest Palindromic Substring

时间:2015-05-02 18:05:53      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
class Solution {
public:
    string longestPalindrome(string s) {
        int length=s.length();
        int maxlen=0;
        int start=0;
        bool flag[100][100]={false};
        //初始化一个字符的回文串的动态状态
        for(int i=0;i<length;i++){
            flag[i][i]=true;
            if(maxlen<1){
                maxlen=1;
                start=i;
            }
        }
        //初始化状态矩阵,这里是长度为2的回文串
        for(int i=0;i<length-1;i++){
            if(s[i]==s[i+1]){
                flag[i][i+1]=true;
                if(maxlen<2){
                    maxlen=2;
                    start=i;
                }
            }
        }
         
      for(int len=3;len<=length;len++){                      //回文串的长度,从3开始,长度1,2是初始化的
          for(int i=0;i<=length-len;i++){                   //子串起始地址
                int j=i+len-1;  //子串结束地址
               if(s[i]==s[j]&&flag[i+1][j-1]){ 
                   flag[i][j]=true;
                   if(maxlen<len){
                       maxlen=len;
                       start=i;
                   }
               }
          }      
        
    }
    return s.substr(start,maxlen);
}
};
View Code

 注意的问题:

动态规划问题的状态方程和转移方程,必须知道,这个方程有初始化条件

这里就是一个字符的回文串和两个字符的回文串,

所有别的长度的回文串就是根据这个两个初始化条件得

http://blog.csdn.net/feliciafay/article/details/16984031

最长回文串:LeetCode:Longest Palindromic Substring

标签:

原文地址:http://www.cnblogs.com/kkshaq/p/4472141.html

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