zoukankan      html  css  js  c++  java
  • 最长回文串总结

    资料参考:

    1. Leetcode Solution of Longest Palindromic Substring in Java
    2. 最长回文字符串

    心得:

    (1)Manacher算法能达到O(n)复杂度,但是很难描述,又不经典,所以没有必要一定要掌握

    (2)动态规划的方法值得仔细琢磨

    Define a 2-dimension array "table" and let table[i][j] denote whether substring from i to j is palindrome.(定义一个二维数组,用table[i][j]代表从i到j的子串是否为回文串)

    Start condition:

    table[i][i] == 1;
    table[i][i+1] == 1  => s.charAt(i) == s.charAt(i+1) 
    

    Changing condition:(这是一种递归的思路,table[i+1][j-1]为回文串,且str[i]和str[j]相等,所以i到j为回文串,即table[i][j]=1)

    table[i][j] == 1 => table[i+1][j-1] == 1 && s.charAt(i) == s.charAt(j)

    (3)参考资料2中的O(n2)算法也很清晰:

    从里向外来判断。也就是先判断子字符串(如dd)是不是对称的。如果它(dd)不是对称的,那么向该子字符串两端各延长一个字符得到的字符串肯定不是对称的。如果它(dd)对称,那么只需要判断它(dd)两端延长的一个字符是不是相等的,如果相等,则延长后的字符串是对称的。

  • 相关阅读:
    AcWing
    AcWing
    AcWing
    AcWing
    AcWing
    2019牛客国庆集训派对day1
    模板
    2019南昌网络赛H The Nth Item 矩阵快速幂
    ACwing92 递归实现指数型枚举 dfs
    ACwing91 最短Hamilton路径 状压dp
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742627.html
Copyright © 2011-2022 走看看