LeetCode 5:最长回文子串

导读:本篇文章讲解 LeetCode 5:最长回文子串,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

LeetCode 5

题目:
在这里插入图片描述

思路:

仅此回文子串题,指针从中心走向两端
如何确定指针 ?for循环遍历每个索引 !
使用for遍历每一个索引 !偶数则指针为i 和 i ,奇数则指针为i 和 i+1,最后更新最长的结果r

注意: substring()是左闭右开!

Java实现:

class Solution {
    public String longestPalindrome(String s) {
        String r="";  // 长度为0,便于比较!
        // 左右指针,从中间向两边移动!
        for(int i=0;i<s.length();i++){       
            String s1=find(s,i,i);   // 找到以i位置为中心的回文串
            String s2=find(s,i,i+1); // 找到以i和i+1位置为中心的回文串  // find有while防止空指针异常
            r= r.length()>s1.length()? r:s1;
            r= r.length()>s2.length()? r:s2;  // 更新r结果
        }
        return r;
    }

    String find(String s,int l,int r){
        // 防止空指针异常
        while(l>=0 && r<s.length() && s.charAt(l)==s.charAt(r)){
            l--;
            r++;  // 指针向两边展开   
        }
        // 不满足while条件后会跳出,l和r回多运行一次 l--  r++ ,所以要l+1,但不用r-1,因为substring是左闭右开
        return s.substring(l+1,r);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89296.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!