[leetcode] 5. Longest Palindromic Substring

三种方法:

1. 对每一个字符,从左右两边开始算

2. 动态规划

string input;

int length = input.length();

int[][] r= new int[length][length];

for (int i = length - 1; i >= 0; i --) {

  for (int j = i; j < length; j++) {

    if (i == j) {

      r[i][j] = 1;

    } else if ( input.charAt(i) == input.charAt(j)) {

      if (i + 1 == j) {

        r[i][j] = 2;

      } else if (r[i+1][j - 1] != 0) {

        r[i][j] = r[i + 1][ j - 1] + 2;

      }  else {

        r[i][j] = 0;

      }

    } else {

        r[i][j] = 0;

    }

  }

}

3. Manacher's Algorithmn

https://www.hackerrank.com/topics/manachers-algorithm

http://algs4.cs.princeton.edu/53substring/Manacher.java.html

原文地址:https://www.cnblogs.com/Gryffin/p/6810854.html