题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param A string字符串 * @return int整型 */ public int getLongestPalindrome (String A) { // write code here // 中心拓展算法 int len = A.length(); int maxLen = 1; int start = 0; // 求长度为奇数的回文 for (int i = 0; i < len; i ++){ int j = i - 1, k = i + 1; while(j >= 0 && k < len && A.charAt(j) == A.charAt(k)) { if (k - j + 1 > maxLen){ maxLen = k - j + 1; } k ++; j --; } } // 求长度为偶数的回文 for (int i = 0; i < len - 1; i ++){ if (A.charAt(i) != A.charAt(i+1)){ continue; } int j = i - 1, k = i + 2; if (maxLen == 1) maxLen = 2; while(j >= 0 && k < len && A.charAt(j) == A.charAt(k)){ if (k - j + 1 > maxLen){ maxLen = k - j + 1; } k ++; j --; } } return maxLen; } }