LeetCode算法题之5:Longest Palindromic Substring

5. 最长镜像子串 [leetcode 5: Longest Palindromic Substring] 5. 最长镜像子串 [leetcode 5: Longest Palindromic Substring] 原题链接 https://leetcode.com/problems/longest-palindromic-substring 老王的解法链接 https://github.com/simplemain/leetcode/blob/master/5/analysis.md 难度 ★★☆☆☆... 阅读详情

LeetCode之5:Longest Palindromic Substring

问题描述:

在这里插入图片描述

查找一个字符串的最长对称子序列。本文解法参考了[LeetCode] Longest Palindromic Substring 最长回文子串

问题的陷阱与难点:

  1. 能否在较短时间内理清逻辑,快速写出代码。
  2. 普通的向两边扩展查找最长字串的方法比较好想,但是存在较多重复操作。dp的解法比较难想出来。

缺陷代码分析(41.98%)

/**
 * @program: xiaolajiao001
 * @description: Longest Palindromic Substring
 * @author: yi ao
 * @create: 2019-02-20 16:32
 */
public class LeetCode5 {
  int max = 0;
  int left = 0,right = 0;

  public String longestPalindrome(String s) {
    if (s == null || s.length() == 0) {
      return s;
    }
    int length = s.length();
    boolean [][] dp = new boolean[length][length];
    for (int i = 0; i < length; i++) {
      for (int j = 0; j < i; j++) {
        dp[j][i] = s.charAt(i) == s.charAt(j) && (i - j < 2 || dp[j + 1][i - 1] == true);
        if (dp[j][i] == true && i - j + 1 > max) {
          max = i - j + 1;
          left = j;
          right = i;
        }
      }
      dp[i][i] = true;
    }
    return s.substring(left, right + 1);
  }
}

**这道题主要考察的是思路,很容易在遍历的过程中产生重复的操作,所以如何能让之前判断好的结果辅助运用到后面的子串,这是典型的动态规划(dp)思想. **

思路

既然要用dp,肯定需要一个结构存储已经计算完毕的结果。

由于该题是求最长连续子序列,所有可能的子序列的个数是length2. 所以使用二维数组保存是最好的。

dp的核心就是前人栽树,后人乘凉。该题该怎样设计dp公式?

很容易想到的是,一个字符肯定是对称的,两个相等的字符也是对称的。除此之外,三个或三个以上的字符串则必须两端的两个字符相等,才有可能是对称的,因此,dp公式就得到了,假设array二维数组保存的是结果, i , j 分别代表字符串的左右边界下标,s代表的原始字符串:

二维数组取值条件
array[i, j]trueif i==j
array[i, j]s[i] == s[j]if i + 1 = j
array[i, j]s[i] == s[j] && array[i+1][j-1]if i + 1 < j

如此以来,如果我们进行两层循环遍历,便可以像99乘法表那样,逐渐将从最小的字符串到最大的字符串的匹配结果得到。时间复杂度是O(n2)。

  1. 能不能将时间复杂度降低到小于O(n2)?
TMP112/TMP102温度传感器驱动开发与嵌入式实战 数字温度传感器是嵌入式系统环境感知的核心器件,其通过I²C等标准总线实现高精度、低功耗测温。原理上依赖ΔΣ模数转换与二进制补码数据格式,结合寄存器配置实现模式控制、阈值报警与功耗管理。技术价值体现在±0.5°C级精度、1μA级静态电流及SOT-563超小封装带来的系统集成优势。广泛应用于工业MCU热监控、电池物联网终端、医疗电子温度补偿及汽车ECU板级测温等场景。本文围绕TMP112/TMP102展开,深入解析寄存器协议、硬件接口约束、HAL驱动分层设计、FreeRTOS任务调度及生产级校准方法,覆盖从芯片 阅读详情

相关推荐

SNAP实战:哨兵1 SLC数据预处理全流程详解(附避坑指南)

本文详细解析了使用SNAP软件处理哨兵1号SLC数据的完整预处理流程。从轨道精校正、辐射定标到多视与斑点滤波,再到地理编码,文章提供了清晰的操作步骤与核心逻辑,并重点分享了实践中的常见“坑”与解决方案,旨在帮助用户高效、准确地完成SAR数据预处理。

7up55的博客 1026

LeetCode第五题:Longest Palindromic Substring(c++)详解

LeetCode:第五题 Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: “babad” Output: “bab” N...

WangHuanToBeBest 556

【学习体会】Lighttools8.4.0:矩形阵列光源+条形光源的光学仿真分析

在solidworks中设计了条形光源的基本结构: 由32*6个矩形led组成矩形光源阵列,如下所示 另存为step文件后,导入lighttools中,这里要设置模型的光学属性为:吸收体(机械) 因为我们设计的光源模型是一个整体,我们不能单个面的设置光源,比如说, 这样做的话并不会是这个面设置为光源,而是会把做一个模型都变成一个光源,如下 这显然不是我们想要的 那么,我们就在led位置上放置一个矩形面光源, 这样我们就放置好了一个面光源, 但是问题是,还有191...

LeonJin的博客 1万+

【LeetCode】5. Longest Palindromic Substring 最长回文子串

【LeetCode】5. Longest Palindromic Substring 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/longest-palindromic-substring/description/ 题目描述: Given a string s, find the longest palind...

负雪明烛 7774

电动汽车BMS核心技术:AS8510高精度传感器解析

电池管理系统(BMS)是电动汽车的核心组件,其精度直接影响电池安全与续航表现。通过Σ-Δ ADC和斩波稳定等技术,现代BMS传感器可实现±0.5%的电流测量精度,满足汽车级AEC-Q100和ISO 26262标准。AS8510作为行业标杆芯片,采用双通道16位ADC架构,在-40°C至+150°C范围内保持稳定性能,特别适合新能源汽车的严苛环境。这类高精度传感器技术不仅解决了传统BMS的温漂难题,还为智能电池诊断、无线BMS等创新应用奠定了基础,是推动电动汽车技术进步的关键要素。

weixin_30781775的博客 533

避坑指南:RK3588视频编码与SRT推流实战中,我遇到的5个典型问题及解决方案

本文深度解析RK3588平台视频编码与SRT推流实战中的五个典型问题,包括MIPI摄像头内存对齐、多线程数据传递、FFmpeg时间戳设置、SRT连接参数调优及系统资源监控。提供具体解决方案和优化技巧,帮助开发者高效实现实时视频网络传输。

weixin_28718793的博客 322

leetcode之Longest Palindromic Substring

思路: 1、把原来的字符串转换成字符数组,再创建一个原来字符数组的转置数组 2、让转置数组和原来的字符数组相向而行,每移动一个单位,比较一次,总共比较2*length-1次,令i的初始值为1,i记录比较次数;当i&lt;=length的时候,比较的长度是i,当i&gt;=length的时候,比较的长度是2*length-i; 3、比较方式:两个字符数组对应的位置进行比较,选出连续重合最多的加...

qq_35455503的博客 198

104基于深度学习识别是AI生成还是真实图片

的可视化界面,通过点击左侧可以加载要识别的检测对象图片,点击中间的识别按钮,会识别出结果,识别结果在右侧显示,当前识别的图片是真实的图片,非假图片。有兴趣的小伙伴也可以自行扩充数据集,或训练自己的数据集。文本,分别存放了图片路径和对应的标签。文本里面的数据,并将训练好的模型也保存在本地。即可加载训练好的模型,真假图片进行识别。本期给大家介绍的是基于深度学习识别是。代码整体是非常简便的,总共三个。个文件夹分别是真图和。

xcvxvfgdfgfh的博客 2260

【LeetCode】5. Longest Palindromic Substring

5. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example: Input: &quot;babad&quot; Output: &quot;bab&quot; Note: ...

zjwreal 1760

Akamai移动端Sensor数据采集与BMP风控机制深度解析

本文深度解析了Akamai在移动端风控中的核心机制,重点阐述了Sensor数据如何通过采集陀螺仪、加速度计等硬件信息,结合设备指纹生成连续且符合物理规律的行为轨迹。详细剖析了数据从采集、加密校验到通过BMP风控三重验证(校验位、时间差、数据逻辑)的完整流程,并提供了从模拟优化到自建风控模型的实用应对思路。

quiet的专栏 284

【Com通信】Com模块的事件帧发送及周期报文的快慢发送机制

Com模块的事件帧发送及周期报文的快慢发送机制

qq_36056498的博客 2334

LeetCode5. Longest Palindromic Substring(中心扩散法)

一、问题描述 Given a string s, find the longest palindromic substring(最长回文字符串) in s. You may assume that the maximum length of s is 1000. Example: Input: “babad” Output: “bab” Note: “aba” is also a val...

天天向上 882

基于MATLAB自动发电控制(AGC)仿真系统的设计与实现:电力系统频率稳定与功率平衡的深入解析

自动发电控制(AGC)是电力系统运行中的一个关键功能,其主要任务是通过自动调节发电机组的输出功率,使得电网中的频率稳定在规定范围内,并维持发电与负荷的动态平衡。当电力负荷发生变化时,AGC会立即响应,调整发电机的功率输出,以避免电网频率的剧烈波动。维持系统频率稳定:电网频率通常应维持在标准值(例如50Hz或60Hz)附近。当负荷波动或电力需求突然变化时,AGC通过调节发电机输出,确保频率不发生过大的偏离。实现区域内的功率平衡。

qq_38334677的博客 1108

LeetCode算法题之5. Longest Palindromic Substring(medium)

题目描述: Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: “babad” Output: “bab” Note: “aba” is also a valid answer. Ex...

DaMoWangZQ的博客 202

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python写算法题:leetcode: 5. Longest Palindromic Substring

https://leetcode.com/problems/longest-palindromic-substring/#/description class Solution(object): def palindrome(self, s, centpos): ind0=0 while True: if centpos-ind

371

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LeetCode算法题5----Longest Palindromic Substring

#5. Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic su...

weixin_33953249的博客 88

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode 5. Longest Palindromic Substring 题解

本题是动态规划的经典问题,主要考察对状态定义和状态转移方程的理解。通过动态规划或中心扩展法,我们可以高效地找到最长的回文子串。动态规划的核心思想是:通过填充一个二维表格,记录每个子串是否是回文串。中心扩展法的核心思想是:遍历每个字符作为回文串的中心,向两边扩展,找到最长的回文串。在实际应用中,中心扩展法通常更受欢迎,因为它的空间复杂度更低,而且代码更简洁易懂。这种方法不仅适用于最长回文子串问题,还可以应用于许多其他需要处理回文串的问题。掌握这些方法,对于解决这类问题非常重要。

cannonjinx的博客 4595

[ LeetCode ] 5. Longest Palindromic Substring (C++ & Python)

题目: 5. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: "babad" Output: "bab" No...

xn's blog 555

c语言刷leetcode第五题Longest Palindromic Substring

近日要找实习,需要练习一下算法,于是准备刷题。用的是leetcode。但是刷了一段时间,就发现之前自己之前刷的题目的思路不是很清晰了,于是在这里记录一下自己的思路和代码,以供之后复习理解。 第五题Longest Palindromic Substring第五题Longest Palindromic Substring题干: Given a string s, find the longest

guijiao1243的博客 948

[Leetcode] 5. Longest Palindromic Substring 和 [Leetcode] 516. Longest Palindromic Subsequence 最长回文子序

目录 1、[Leetcode] 5. Longest Palindromic Substring (1)、问题描述 (2)、思路分析 (3)、Java代码 2、[Leetcode] 516. Longest Palindromic Subsequence (1)、 问题描述 ​​​​​​ (2)、 思路分析 (3)、 Java代码 1、[Leetcode] 5. Longe...

qq_29545781的博客 645

LeetCode 刷题记录 5. Longest Palindromic Substring

题目: Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: “babad” Output: “bab” Note: “aba” is also a valid answer. Exam...

dldldl1994的博客 328

LeetCode 5. Longest Palindromic Substring 解题报告

LeetCode 5. Longest Palindromic Substring 解题报告题目描述Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.示例Example 1: Input : “babad” Ou

骆小坑的填坑之旅 3212

LeetCode 5 longest-palindromic-substring题解

LeetCode longest-palindromic-substring题解 题目链接 飞鱼决定开始每天保底五题(except Hard) 粗爆动态规划 (fast than 25%) 思路 主要就是挖掘前提条件: 1、单个字符必然回文 2、两个字符当且仅当他们相同时回文 其次是关联: 如果区间[i, j]是回文,当且仅当[ i+1, j-1]是回文 and s[i] == s[j] 然后再...

qq_42308861的博客 211

LeetCode(5) Longest Palindromic Substring

如果一个字符串从左向右写和从右向左写是一样的,这样的字符串就叫做palindromic string,如aba,或者abba。给定输入一个字符串,要输出一个子串,使得子串是输入字符串的最长的padromic string。 我的思路是这样的。 以abba这样一个字符串为例来看,abba中,一共有偶数个字,第1位=倒数第1位,第2位=倒数第2位......第N位=倒数第N位 以aba这样一个字

BUILD 1万+

LeetCode-Longest Palindromic Substring

文章目录LeetCode-Longest Palindromic Substring题目描述思路分析C++实现Scala实现 版权声明:本文为博主原创文章,转载请注明原文出处! 写作时间:2019-02-10 00:04:34 LeetCode-Longest Palindromic Substring 题目描述 LeetCode第5道题目:5. Longest Palindromic Subst...

给永远比拿愉快 802

LeetCode Top 100 高频算法题 Longest Palindromic Substring

LeetCode Top 100高频算法题,即LeetCode上最高频的100道求职面试算法题。小编和实验室同学之前面试找工作,也只刷了剑指offer和这top 100算法题,在实际面试中也遇到了很多LeetCode上的原题。剑指offer算法最优解之前和大家分享了,LeetCode Top 100这100道算法题,每道题小编都刷了很多遍,并且总结了一种最适合面试时手撕算法的最优解法。后续每天和大家分享一道LeetCode top 100高频算法题,以及小编总结的最优解法。 算法题顺序 LeetCod

我的博客 1451
上一篇: LeetCode算法题之3:Longest Substring Without Repeating Characters
下一篇: LeetCode算法题之6:ZigZag Conversion
耐利
博客等级 码龄12年 188粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值