zoukankan      html  css  js  c++  java
  • Longest Palindromic Substring

    Longest Palindromic Substring

    问题:

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

    思路:

      动态规划

    我的代码:

    public class Solution {
        public String longestPalindrome(String s) {
            if(s == null || s.length() == 0) return s;
            int len = s.length();
            boolean[][] dp = new boolean[len][len];
            int start = 0;
            int max = 1;
            for(int i = 0; i < len; i++)
            {
                dp[i][i] = true;
                if(i < len- 1 && s.charAt(i) == s.charAt(i+1))
                {
                    max = 2;
                    start = i;
                    dp[i][i+1] = true;
                }
            }
            for(int size = 3; size <= len; size++)
            {
                for(int i = 0; i <= len-size; i++)
                {
                    int j = i+size-1;
                    if(dp[i+1][j-1] && s.charAt(i)==s.charAt(j))
                    {
                        max = size;
                        start = i;
                        dp[i][j] = true;
                    }
                }
            }
            return s.substring(start,start+max);
        }
    }
    View Code

    学习之处:

    • 动归方程为dp[i][j] = (s.charAt(i) == s.charAt(j)) && dp[i+1][j-1] ? true : false;
    • 想不出来动态规划的方程,就先想的dfs怎么做,然后再反向思维得出动态规划的方程,动态规划之所以快,是因为减少了好多的重复计算。
  • 相关阅读:
    C中的system函数
    结构体数组
    转载--C++的反思
    oracle临时表空间
    oracle行转列,列转行
    oracle查询表结构语句
    实例化内部类
    Java非静态内部类为什么不能有静态成员
    oracle显示转换字段类型cast()函数
    linux中vim常用命令
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4390429.html
Copyright © 2011-2022 走看看