美文网首页
最长回文子串(LeetCode5.最长回文子串)

最长回文子串(LeetCode5.最长回文子串)

作者: 雁阵惊寒_zhn | 来源:发表于2020-11-14 10:25 被阅读0次

10月27日面试题

题目

截图自LeetCode

解析

中心展开法。
遍历字符串,每遍历到一个字符,以这个字符为中心向两侧展开,比较对称的字符是否相同,记录最长的回文子串。然后,再以这个字符与下一个字符的中间间隙为中心向两侧展开,因为偶数长度的子串也可能是回文子串,同样比较后记录下最长的回文子串。当遍历所有字符之后,返回记录的最长回文子串。时间复杂度O(n*n)。

代码

public String longestPalindrome(String str) {
    String result = ""; 
    if (str == null || str.length() < 1){
        return result;
    }
    for (int i = 0; i < str.length(); i++){
        //当前字符,两侧展开的起始下标
        int s = i; int e = i;
        while (s >=0 && e < str.length() && str.charAt(s) == str.charAt(e)){
            s--;
            e++;
        }
        result = str.substring(s + 1, e).length() > result.length()
            ? str.substring(s + 1, e) : result;
        //当前字符后的空隙,两侧展开的起始下标
        s = i; e = i + 1;
        while (s >=0 && e < str.length() && str.charAt(s) == str.charAt(e)){
            s--;
            e++;
        }
        result = str.substring(s + 1, e).length() > result.length()
            ? str.substring(s + 1, e) : result;
    }//for
    return result;
}

相关文章

  • LeetCode5.最长回文子串 JavaScript

    LeetCode5.最长回文子串 JavaScript 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设...

  • 最长回文子串(LeetCode5.最长回文子串)

    10月27日面试题 题目 截图自LeetCode 解析 中心展开法。遍历字符串,每遍历到一个字符,以这个字符为中心...

  • 最长回文子串

    最长回文子串——Manacher 算法 1. 问题定义 最长回文字符串问题:给定一个字符串,求它的最长回文子串长度...

  • 字符串算法

    最长公共前缀 最长回文串 最长回文子序列 最长公共子串 反转单词顺序列 反转字符串 字符串转数字 IP-int互转

  • 打卡-最长回文子串

    最长回文子串(中等)

  • 最长回文子序列

    该问题区别于最长回文子串,子串必须是连续的,而子序列则可以跳跃,例如AABCAA的最长回文子串为AA,但是它的最长...

  • Manacher算法

    最长回文子串问题# 给定一个字符串,找出最长的回文子串,如"waabwswbfd",则最长子串为bwsb. 中心试...

  • 最长回文子串问题—Manacher算法

    最长回文串问题是一个经典的算法题。 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果...

  • LeetCode 第647题:回文子串

    1、前言 2、思路 此题与最长回文子串很像,只不过那个是求最长的回文子串,而这个是求回文子串的数目。但是他们的解法...

  • C语言实现求最长回文子串

    最长回文子串的概念 回文串是指正序和反序都一样的字符串,例如:Str1 = "AbbA",则Str1的最长回文子串...

网友评论

      本文标题:最长回文子串(LeetCode5.最长回文子串)

      本文链接:https://www.haomeiwen.com/subject/sexlvktx.html