每日OJ题_字符串②_力扣5. 最长回文子串(中心拓展)

目录

力扣5. 最长回文子串

解析代码(中心拓展)


力扣5. 最长回文子串

5. 最长回文子串

难度 中等

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

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

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

示例 2:

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

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成
class Solution {
public:string longestPalindrome(string s) {}
};

解析代码(中心拓展)

        暴力解法是O(N^3),对于一个子串而言,如果它是回文串,并且长度大于 2,那么将它首尾的两个字母去除之后,它仍然是个回文串。如此这样去除,一直除到长度小于等于 2 时呢?长度为 1 的,自身与自身就构成回文,而长度为 2 的,就要判断这两个字符是否相等了。

        从这个性质可以反推出来,从回文串的中心开始,往左读和往右读也是一样的。那么,是否可以枚举回文串的中心呢? 从中心向两边扩展,如果两边的字母相同,就可以继续扩展,如果不同,就停止扩展。这样只需要一层 for 循环,就可以完成之前两层 for 循环的工作量。

class Solution {
public:string longestPalindrome(string s) {int n = s.size(), begin = 0, maxlen = 0;for(int i = 0; i < n; ++i){int left = i, right = i, cnt = 0; // 奇数长度拓展while(left >= 0 && right < n && s[left] == s[right]){--left;++right;cnt = right - left - 1;}if(cnt > maxlen){begin = left + 1;maxlen = cnt;}left = i, right = i + 1, cnt = 0; // 偶数长度拓展while(left >= 0 && right < n && s[left] == s[right]){--left;++right;cnt = right - left - 1;}if(cnt > maxlen){begin = left + 1;maxlen = cnt;}}return s.substr(begin, maxlen);}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

latex变量上下加自适应长度箭头

latex变量上下加自适应长度箭头 在变量上加箭头的代码如下 % 在上 \overrightarrow{A B} \overleftarrow{A B} % 在下 \underrightarrow{A B} \underleftarrow{A B}得出的结果依次如下 A B → , A B ← , A B → , A B ← \overrightarrow{A B},\overleftarrow{A B}, \under…

探索并发编程:深入理解线程池

文章目录 前言一、线程池是什么&#xff1f;二、如何创建线程池1.使用Executors类2.使用ThreadPoolExecutor类手动配置线程池 总结 前言 随着计算机系统的不断发展和进步&#xff0c;我们需要处理更多的并发任务和复杂的操作。而线程池作为一种高效的线程管理机制&#xff0c;…

PyTorch 深度学习(GPT 重译)(一)

第一部分&#xff1a;PyTorch 核心 欢迎来到本书的第一部分。在这里&#xff0c;我们将与 PyTorch 迈出第一步&#xff0c;获得理解其结构和解决 PyTorch 项目机制所需的基本技能。 在第一章中&#xff0c;我们将首次接触 PyTorch&#xff0c;了解它是什么&#xff0c;解决了…

爬虫基础:HTTP基本原理

爬虫基础&#xff1a;HTTP基本原理 前言HTTP基本原理URI 和 URLHTTP 和 HTTPSHTTP 请求过程请求与响应HTTP请求HTTP响应请求与响应的交互过程 HTTP 2.0二进制传输多路复用Header压缩服务器端提前响应内容安全 前言 了解 HTTP的基本原理&#xff0c;了解从往测览器中输人 URL到获…

设计模式总结(四)

上一篇总结了设计模式的结构型&#xff0c; 接下来总结一下设计模式的几种行为型模式。 模板方法模式&#xff1a; 模板方法模式定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。这样做的目的是使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤&…

「连载」边缘计算(三十二)03-14:边缘部分源码(源码分析篇)

&#xff08;接上篇&#xff09; EdgeCore之edgemesh 前面对EdgeCore组件的edged、devicetwin、edgehub、eventbus、metamanager功能模块进行了分析&#xff0c;本节对EdgeCore组件的另一个功能模块edgemesh进行剖析。目前&#xff0c;KubeEdge官网没有edgemesh相关介绍&…

Visio 2021专业版密钥下载安装

Visio 2021 专业版是微软公司开发的一款功能强大的流程图制作软件&#xff0c;适用于创建各种类型的图表和流程图&#xff0c;包括&#xff1a; 流程图&#xff1a;用于可视化业务流程、工作流程和系统流程。组织结构图&#xff1a;用于展示组织结构和人员关系。网络图&#x…

算法沉淀——贪心算法四(leetcode真题剖析)

算法沉淀——贪心算法四 01.最长回文串02.增减字符串匹配03.分发饼干04.最优除法 01.最长回文串 题目链接&#xff1a;https://leetcode.cn/problems/longest-palindrome/ 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回 通过这些字母构造成的 最长的回文串 。 …

YOLOV5 改进:修改网络结构--C2f 模块

1、前言 YOLOV5 采用C3模块,类似于残差结构的思想 class C3(nn.Module):# CSP Bottleneck with 3 convolutionsdef __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansionsuper().__init__()c_ = int(c2 * e) #…

一篇文章搞懂vue基础(上)

01._初识vue 初识vue: 1.想让Vue工作&#xff0c;就必须创建一个vue实例&#xff0c;且要传入一个配置对象&#xff1b; 2.root容器里的代码依然符合html规范&#xff0c;只不过混入了一些特殊的vue语法 3.root容器里的代码被称为【Vue模版】 4.Vue实例和容器是一一对应的 5.真…

《1w实盘and大盘基金预测 day8》

昨日预测还行&#xff0c;大盘最低到3054缺口附近&#xff0c;并没有补缺口 &#xff0c;顶住了&#xff0c;震荡向上&#xff0c;评分B。 今天行情是指数涨却赚不到钱&#xff0c;像极了拉指数掩护蓝筹股出货 公众号&#xff1a;JavaHelmet 昨天预测&#xff1a; 3042-305…

大数据开发(Hadoop面试真题)

大数据开发&#xff08;Hadoop面试真题&#xff09; 一、HDFSⅠ、HDFS基础概念和架构1、HDFS的作用2、介绍下HDFS&#xff0c;说下HDFS优缺点&#xff0c;以及使用场景&#xff1f;3、请解释一下Hadoop中NameNode和DataNode的作用。4、请解释一下HDFS架构中NameNode和DataNode之…

一文带你了解MySQL事务特性以及其底层原理

MySQL的事务支持是通过其存储引擎&#xff0c;特别是InnoDB存储引擎来提供的。事务的四大特性&#xff0c;通常被称为ACID属性&#xff0c;分别是原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff0…

Linux中,运行程序,顺便将打印信息存储在Log文件中查看

前言 如题&#xff0c;原本打算在代码中自己写一个类去管理将打印信息收集到log日志中&#xff0c;忽然想到&#xff0c;其实也可以写sh脚本 简单demo1 #!/bin/bash# 启动应用程序 test&#xff0c;并将标准输出和标准错误输出都追加到 log 文件中 ./test >> output.log…

使用 mypy 做 type check

前言 完残&#xff01;&#x1f602;&#xff0c;最近看之前写的 Python 代码老得琢磨这比变量的类型是啥&#xff08;Python 无类型系统xxx&#xff09;&#xff0c;不愧是我写的&#xff01; 看段之前写的实现迭代器模式的代码&#xff1a; # 抽象迭代器类 class Iterator(…

7-7 12-24小时制

题目链接&#xff1a;7-7 12-24小时制 一. 题目 1. 题目 2. 输入输出格式 3. 输入输出样例 4. 限制 二、代码 1. 代码实现 #include <stdio.h>int main(void) {int hour, minute;char *str;if (scanf("%d:%d", &hour, &minute) ! 2) {return -1;}i…

操作系统系列学习——死锁处理

文章目录 前言死锁处理 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划学习操作系统并完成6.0S81&#xff0c;加油&#xff01; 本文总结自B站【哈工大】操作系统 李治军&#xff08;全32讲&#xff09; 老师课程讲的非常好&#xff0c;感谢 【哈工大】操…

如何优惠申请DigiCert证书

DigiCert作为全球知名的数字证书颁发机构&#xff0c;其SSL证书以高度的安全性和信任度广受认可。而JoySSL作为国内优秀的SSL证书服务平台&#xff0c;提供了便捷、高效的证书申请服务&#xff0c;让您能够轻松获取并安装DigiCert SSL证书。接下来&#xff0c;本文将详细介绍如…

pytest相关面试题

pytest是什么&#xff1f;它有什么优点&#xff1f; pytest是一个非常流行的Python测试框架&#xff0c;它具有简洁、易用、高校等优点。他可以帮助测试人员方便地编写和运行测试用例&#xff0c;并且提供了丰富的插件和扩展&#xff0c;支持各种测试需求介绍下pytest常用的库 …

什么情况用@RequestBody、@RequestParm、@PathVariable

1.requestParam(请求参数&#xff09;&#xff1a;使用RequestParam注释将请求参数绑定到控制器中的方法参数。用于从请求访问查询参数值的RequestParam注释。 如下请求URL&#xff1a;http://localhost:8080/springmvc/hello/101?param110&param220 以下是RequestParam注…