题解 | #最长回文子串#
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
思路:
- 初始长度1
- 以i为中心,向两边扩展
- 和中心相等情况(
abbbc
) - 左和右相等情况 (
cbabc
)
public int getLongestPalindrome (String A) { int length=A.length(); int left=0; int right=0; // 初始长度1 int len=1; int maxLen=0; for(int i=0;i<length;i++){ // 以i为中心,向两边扩展 left=i-1; right=i+1; // 和中心相等情况(abbbc) while(left>=0 && A.charAt(left)==A.charAt(i)){ len++; left--; } while(right<length && A.charAt(right)==A.charAt(i)){ right++; len++; } // 左和右相等情况 (cbabc) while(left>=0 && right<length && A.charAt(left)==A.charAt(right)){ len+=2; left--; right++; } if(len>maxLen){ maxLen=len; } len=1; } return maxLen; }#题解#