• 最长回文子串


    解析:

      递归:

      回文子串,一开始想的是用递归求解,对这个字符串直接判断如果是,那么直接返回就可以,如果不是,那么我们就需要考虑两种情况了,一种是舍去开头,一种是舍去结尾,这样一直递归下去,直到某个时刻找到一个字符串是回文的,那么这个肯定是最长的子串。

      动态规划:

      考虑建立一个二维的dp数组,对于动态规划的思路而言,与递归是有些不一样的,一开始我总想着状态转移方程与第一个和最后一个元素有什么关系,后来才发现是将第一个与最后一个抵消掉。

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    示例 1:

    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。


     1 class Solution {
     2     public String longestPalindrome(String s) {
     3         int n=s.length();
     4         if(n==0)
     5             return s;
     6         boolean[][] dp=new boolean[n][n];
     7         for(int i=0;i<n;i++)
     8             for(int j=0;j<=i;j++)
     9                 dp[i][j]=true;
    10         for(int i=1;i<n;i++)
    11             for(int j=0;j<n-i;j++)
    12             {
    13                 dp[j][j+i]=(s.charAt(j)==s.charAt(j+i))&&dp[j+1][j+i-1];
    14             }
    15         String res="";
    16         for(int i=0;i<n;i++)
    17             for(int j=i;j<n;j++)
    18             {
    19                 if(dp[i][j]==false)
    20                     continue;
    21                 else
    22                 {
    23                     res=((j-i+1)>res.length())?s.substring(i,j+1):res;
    24                 }
    25             }
    26         return res;
    27     }
    28 }
  • 相关阅读:
    SQL INNER JOIN
    SQL JOIN
    SQL OUTER JOIN
    SQL CROSS JOIN
    SQL 基础:Select语句,各种join,union用法
    Morton Code
    vs 字体
    sql 语言
    sqllite3
    linux怎么区别文本文件和二进制文件
  • 原文地址:https://www.cnblogs.com/cold-windy/p/11596828.html
Copyright © 2020-2023  润新知