leetcode题目5.最长回文子串
题目描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 解法一:扩展中心,中心开花 我们知道回文串一定是对称的,所以我们可以每次循环选择一个中心,进行左右扩展,判断左右字符是否相等即可。 由于存在奇数的字符串和偶数的字符串,所以我们需要从一个字符开始扩展,或者从两个字符之间开始扩展,所以总共有 n+n-1 个中心。 class Solution { public static String longestPalindrome(String s) { if (s == null || s.length() == 0) { return ""; } //记录回文串的开始位置 int start = 0; //记录回文串的结束位置 int end = 0; //记录中间得到的回文串的长度 int maxLen = 0; for (int i = 0; i < s.length(); i++) { //从n+n-1个中心点开始向外扩展 int len1 = getTheLengthOfPalindrome(s, i, i); int len2 = getTheLengthOfPalindrome(s