zoukankan      html  css  js  c++  java
  • LeetCode OJ-- Longest Palindromic Substring **

    https://oj.leetcode.com/problems/longest-palindromic-substring/

    给一个string,求它的最长回文子串。

    定义一个二维数组bool isPal[1000][1000];记录从 i 到 j 是否为回文的。

    首先初始化 [i][i] = true;

                  [i][i+1] = (s[i] == s[i+1])

    之后对长度 len = 3 和 开始位置 i 进行遍历,复杂度 n*n : sPal[i][i+len-1] = (isPal[i+1][i+len-2] && (s[i] == s[i+len-1])); 判断首尾是否相等,并且中间的部分是否为 true。

    class Solution {
    public:
        string longestPalindrome(string s) {
            if(s == "")
                return "";
            
            bool isPal[1000][1000];
    
            for(int i = 0;i < s.size(); i++)
                isPal[i][i] = true;
    
            int begin = 0, maxlen = 1;
    
            for(int len = 2;len <= s.size(); len++)
            {
                for(int i = 0; i + len <= s.size(); i++)
                {
                    if(len == 2)
                    {
                        isPal[i][i+1] = (s[i] == s[i+1]);
                        if(isPal[i][i+1])
                        {
                            begin = i;
                            maxlen = len;
                        }
                    }
                    else
                    {
                        isPal[i][i+len-1] = (isPal[i+1][i+len-2] && (s[i] == s[i+len-1]));
                        if(isPal[i][i+len-1])
                        {
                            begin = i;
                            maxlen = len;
                        }
                    }
                }
            }
     
            return s.substr(begin,maxlen);
        }
    };
  • 相关阅读:
    Ansible import_playbook 导入playbook
    Ansible Playbook 变量传递
    Ansible Notify与Handler组合
    Ansible Role
    Ansible infile模块
    Ansible When有条件的运行任务
    Ansible register捕获命令输出
    Ansible Command Shell Raw模块区别
    Ansible Facts
    Ansible Jinjia2模块
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3870278.html
Copyright © 2011-2022 走看看