重温算法之最长回文子串

简介: 关于回文的题目,核心思路还是依次比较,找到回文,然后进行其他的操作,另外官方题解中心扩散法也是一个最优解。

一.题目介绍


1.题目来源


链接:LeetCode


2.题目


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


示例 1:

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


示例 2:

输入:s = "cbbd" 输出:"bb"


二.具体实现


1.实现思路


动态规划,这个题目的切入点是如果去针对每个元素做比较,那么就比较耗时,能够减少多重计算的方法就是定义其起点,终点以及其长度,这几个点都是临时存储的局部变量,我们先对数组相邻位置进行判断,如果其字符串相同则是找到了回文,依次类推,就能够找到字符串中最长的回文子串。


2.实现代码


1)自己的实现方式

public String longestPalindrome(String s) {
    if (s == null || s.length() < 2) {
        return s;
    }
    int strLen = s.length();
    //最长回文串的起点
    int maxStart = 0;  
     //最长回文串的终点
    int maxEnd = 0;   
     //最长回文串的长度
    int maxLen = 1; 
    //true:就是回文, false:不是回文
    boolean[][] dp = new boolean[strLen][strLen];
    for (int r = 0; r<strLen; r++){
        for (int l = 0; l < r; l++){
            if (s.charAt(l) == s.charAt(r) && (r - l <=2 || dp[l + 1][r-1])){
                dp[l][r] = true;
                if (r - l + 1 > maxLen) {
                    maxLen = r - l + 1;
                    maxStart = l;
                    maxEnd = r;
                }
            }
        }
    }
    return s.substring(maxStart, maxEnd + 1);
}
复制代码


2)题友的实现方式


暴力求解,列举所有的子串,判断是否为回文串,保存最长的回文串。微信截图_20220531210300.png


3.运行结果

微信截图_20220531210343.png

微信截图_20220531210412.png


三.题后思考


关于回文的题目,核心思路还是依次比较,找到回文,然后进行其他的操作,另外官方题解中心扩散法也是一个最优解。

目录
相关文章
|
8月前
|
算法
【算法沉淀】最长回文子串
【算法沉淀】最长回文子串
|
8月前
|
算法
LeetCode算法题---最长回文子串、N 字形变换(四)
LeetCode算法题---最长回文子串、N 字形变换(四)
45 0
|
8月前
|
算法 搜索推荐 程序员
第六十六练 最长回文子串 - Manacher算法
第六十六练 最长回文子串 - Manacher算法
45 0
|
8月前
|
算法 C#
Leetcode算法系列| 5. 最长回文子串
Leetcode算法系列| 5. 最长回文子串
|
8月前
|
存储 算法 程序员
【算法训练-字符串 一】【子串问题】最长无重复子串、最长回文子串、最长公共前缀
【算法训练-字符串 一】【子串问题】最长无重复子串、最长回文子串、最长公共前缀
75 0
|
算法
Manachar算法(马拉车算法):快速求取最长回文子串
求取最长回文子串的长度的最佳方法为 Manachar算法 ,俗称马拉车算法。常见的方法就是中心扩散法,但时间复杂度较高。
100 0
Manachar算法(马拉车算法):快速求取最长回文子串
|
机器学习/深度学习 存储 算法
【力扣算法08】之 5. 最长回文子串 python
【力扣算法08】之 5. 最长回文子串 python
143 0
|
存储 算法
面试高频算法题---最长回文子串
因此我们可以写出动态规划的状态转移方程:F(i,j) = F(i+1,j-1) && (Si==Sj),此方程表示的意思是:F(i+1,j-1)为回文串并且s的第i个字符和第j个字符相等F(i,j)才是回文串。
面试高频算法题---最长回文子串
【每日算法打卡】最长回文子串
【每日打卡系列】LeetCode 简单题 200 道
【每日算法打卡】最长回文子串
|
算法
重温算法之排序链表
这个题目有点麻烦,如果是使用的暴力法,会直接超时,使用自顶向下的归并排序的话,其实也没有多大的提升,目前是没有好的解决方案的,后期继续思考吧。
134 0
重温算法之排序链表

热门文章

最新文章