5. 最长回文子串(Java) Leecode

5. 最长回文子串(Java) Leecode
先复习下简单的回文数。
利用反转数字。

回文数

解题思路:

不同之处在于,对于回文子串,反转的方式会出现错误。

方法:中心扩散法双指针

class Solution {
    public String longestPalindrome(String s) {

        String res = "";

        for(int i = 0; i < s.length(); i++){
        
        	//考虑回文长度为奇数和偶数的情况
            String s1 = Palindrome(s, i ,i);
            String s2 = Palindrome(s, i, i+1);
			//返回最长的回文串
            res = res.length() > s1.length() ? res : s1;
            res = res.length() > s2.length() ? res : s2;
        }

        return res;
    }

    public String Palindrome(String s, int l, int r){
		//双指针从中间往两边扩散
        while(l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)){
            l--;
            r++;
        }
        return s.substring(l+1, r);
    }
}
上一篇:2022/1/18 链表|| 19. 删除链表的倒数第 N 个结点


下一篇:数据类型与基本运算