leetcode 5.最长回文子串

avatar
作者
筋斗云
阅读量:2

思路:

对于回文,分为两种

1、奇数长度回文,以一个字符作为中心。

2、偶数长度回文,以两个字符作为中心。

private static int longestLen(String s,  int left, int right){         while(left >= 0 && right < s.length()){             if(s.charAt(left) != s.charAt(right)){                 break;             }             left--;             right++;         }         return right - left - 1;     }

该函数结合奇数和偶数情况,对中心两侧的字符进行检查,以获取回文串的最大长度。

在获取了最大长度后,加之中心字符的索引,我们就可以得到该回文字符串。

这里需要注意返回的内容是right - left -1;

如果不理解可以随手画个图感受一下。

主函数:

    public String longestPalindrome(String s) {         if(s==null || s.length() == 1) return s;         int index = 0;         int length = 1;         for (int i = 0; i < s.length(); i++) {             int len1 = longestLen(s, i, i);             int len2 = longestLen(s, i, i + 1);             if(len1 > length){                 length = len1;                 index = i - length / 2;             }             if(len2 > length){                 length = len2;                 index = i - length / 2 + 1;             }          }         return s.substring(index, index + length);     }

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!