zoukankan      html  css  js  c++  java
  • 最长回文串:LeetCode:Longest Palindromic Substring

    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

  • 相关阅读:
    使用KNN算法手写体识别
    os内置模块
    python步长为负时的情况
    qplot()函数的详细用法
    python文件I/O
    python中 @property
    python中定制类
    python中多重继承与获取对象
    python继承,判断类型,多态
    python中访问限制
  • 原文地址:https://www.cnblogs.com/kkshaq/p/4472141.html
Copyright © 2011-2022 走看看