Leetcode-5. 最长回文子串

5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:

输入:s = "cbbd"
输出:"bb"
示例 3:

输入:s = "a"
输出:"a"
示例 4:

输入:s = "ac"
输出:"a"
解题思路
我们求解以每个元素为中心的回文子串,比较长度求最大值
考虑到奇偶性,所以要求出以i为中心,和以i和i+1为中心的结果,比较求最大值
关于求以i为中心的回文子串,则确定左右下标,从中心向两周扩展
图片说明

class Solution {
    public String longestPalindrome(String s) {
        String res="";
        int n=s.length();
        String[] dp=new String[n];
        for(int i=0;i<n;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;
    }
    //找以s[l]和s[j]为中心的回文子串
    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);
    }
}
Leetcode-牛客-刷题笔记 文章被收录于专栏

本专栏主要用于分享栏主在准备java后端面试过程中的刷题笔记

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务