想要精通算法和SQL的成长之路 - 最长回文子串

想要精通算法和SQL的成长之路 - 最长回文子串

  • 前言
  • 一. 最长回文子串
    • 1.1 中心扩散法的运用

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 最长回文子串

原题链接
在这里插入图片描述

1.1 中心扩散法的运用

这类具有回文性质的题目,我们如果用常规的从左往右或者从右往左的遍历方式,在编码上往往比较麻烦。那不妨,我们以字符串中的每一个字符为起点,同时向左右扩散,判断左右的字符是否相等,即中心扩散法,往往这样更加通俗易懂。编码实现上也更为简单。

  1. 我们从左往右遍历字符串,将每个字符串 s(i) 视为中心,分别向左右扩散。
  2. 先向左扩散,排除掉和中心字符 s(i) 相同字符。判断条件:s(left) == s(i)
  3. 先向右扩散,排除掉和中心字符 s(i) 相同字符。判断条件:s(right) == s(i)
  4. 再同时向左右扩散,判断条件:s(left) == s(right)
public class Test5 {public String longestPalindrome(String s) {// 最长回文子串的起始位置int maxStart = 0;// 左右指针,以及数组长度。maxLen:最长回文子串长度,curLen:当前的回文子串长度int left, right, len = s.length(), maxLen = 0, curLen = 1;for (int i = 0; i < len; i++) {left = i - 1;right = i + 1;// 向左扩散,去重while (left >= 0 && s.charAt(left) == s.charAt(i)) {left--;curLen++;}// 向右扩散,去重while (right < len && s.charAt(right) == s.charAt(i)) {right++;curLen++;}// 同时向左右扩散while (left >= 0 && right < len && s.charAt(left) == s.charAt(right)) {left--;right++;curLen += 2;}// 更新最长回文子串长度和起始位置if (curLen > maxLen) {maxLen = curLen;maxStart = left;}curLen = 1;}// 截取字符串, 最长回文子串起始位置 ~ 起始位置+长度return s.substring(maxStart + 1, maxStart + maxLen + 1);}
}

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

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

相关文章

中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

swift 约束布局

添加约束布局 背景图瀑全屏 如何三等分 外面view容器没有约束

类类型参数函数调用发生了什么

class Foo{ public:int key;int val;Foo():key(0),val(0){cout<<"无参构造函数\n";}Foo(int k, int v):key(k),val(v){cout<<"有参构造函数\n";}~Foo(){cout<<"析构函数\n";}Foo(const Foo& foc){this->key foc.key;t…

【Spring Boot】Spring—加载监听器

这里写目录标题 前言加载监听器执行run方法加载配置文件封装Node调用构造器思考 前言 前几天的时候&#xff0c;项目里有一个需求&#xff0c;需要一个开关控制代码中是否执行一段逻辑&#xff0c;于是理所当然的在yml文件中配置了一个属性作为开关&#xff0c;再配合nacos就可…

笔记1.4 计算机网络性能

1. 速率 速率即数据率&#xff08;data rate&#xff09;或称数据传输速率或比特率 单位时间&#xff08;秒&#xff09;传输信息&#xff08;比特&#xff09;量 计算机网络中最重要的一个性能指标 单位&#xff1a;bps、kbps、Mbps k 10^3、M 10^6、G 10^9 速率往往…

网络安全深入学习第一课——热门框架漏洞(RCE-命令执行)

文章目录 一、RCE二、命令执行/注入-概述三、命令执行-常见函数四、PHP命令执行-常见函数1、exec&#xff1a;2、system3、passthru4、shell_exec5、反引号 backquote 五、PHP命令执行-常见函数总结六、命令执行漏洞成因七、命令执行漏洞利用条件八、命令执行漏洞分类1、代码层…

excel中的引用与查找函数篇2

如下所有案例中表头均不参与范围查找内&#xff1a; 1、LOOKUP(lookup_value,lookup_vector,[result_vector])&#xff1a;在一行或者一列中查找某个值并从另一行或者列中找到同位置的值 记住&#xff1a;中括号内的参数可以不赋值&#xff0c;若在中间用逗号隔开这个参数&…

思维模型 协议

1 模型故事 1.1 社会性质的协议 1 世界观的建立 1 2 3 4 5 6 7 8 9 0 这些阿拉伯数字 如此常见&#xff0c;那么我们是否想过 为什么 这些阿拉伯数字我们如此熟悉&#xff1f;为什么我们要学习这些玩意儿&#xff1f;这些东西为什么大家都要学习&#xff0c;都要使用&#x…

C++数据结构X篇_14_二叉树的递归遍历(先序遍历、中序遍历、后续遍历方法介绍;举例;代码实现)

我们知道数据的存储结构分为线性与非线性。线性就是1对1的结构&#xff0c;像栈与队列都属于线性结构。那什么是非线性的结构呢&#xff1f; 非线性即1对n的结构这更符合常规情况&#xff0c;线性结构本质上属于非线性结构中的一种特殊形式&#xff0c;像树就属于非线性结构。但…

neo4j下载安装配置步骤

目录 一、介绍 简介 Neo4j和JDK版本对应 二、下载 官网下载 直接获取 三、解压缩安装 四、配置环境变量 五、启动测试 一、介绍 简介 Neo4j是一款高性能的图数据库&#xff0c;专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构&#xff0c;非常适用于…

6. 装饰器

UML 聚合(Aggregation)关系&#xff1a;大雁和雁群&#xff0c;上图中空心菱形箭头表示聚合关系组合(Composition)关系&#xff1a;大雁和翅膀 &#xff0c;实心菱形箭头表示组合(Composition)关系 测试代码 #include <iostream> #include <stdio.h> #include &l…

海勒姆法则(Hyrum‘s Law)

在对于共享代码库的足够大的用户群中&#xff0c;有人会依赖于你代码的任何可能特性——包括你的漏洞。 摘要 Hyrum’s Law&#xff0c;海勒姆法则&#xff0c;是软件开发中的一个原则&#xff0c;它的核心思想是&#xff1a;当一个接口被足够数量的用户使用时&#xff0c;不论…

Spring复杂对象的3中创建方法

复杂对象是相对于简单对象可以直接 new 出的对象。这种对象在 Spring 中不可以通过简单对象的创建方式来创建。下面我们将通过实现 FactoryBean 接口、实例工厂、静态工厂三种方法来创建。 FactoryBean 接口 Spring 提供 FactoryBean 接口并且提供了 getObject 方法是为了支持…

“熊猫杯” | 赛宁网安获网络安全优秀创新成果大赛优胜奖

9月11日&#xff0c;四川省2023年国家网络安全宣传周正式启动。由四川省委网信办指导&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;主办&#xff0c;成都信息工程大学、四川省网络空间安全协会承办的“2023年网络安全优秀创新成果大赛—成都分站赛(暨四川省‘…

MYSQL 主从搭建详细步骤和测试

MySQL主备搭建 1.主库配置 以下所有操作均在主服务器上执行 1&#xff09;创建用户并授权 create user slave identified with mysql_native_password by 123456 mysql>GRANT REPLICATION SLAVE ON *.* to slave% identified by 123456; //如果用户已存在&#xff0c;会改密…

使用差分进化算法进行关键帧提取:Python实践与详细指南

1. 差分进化算法简介 差分进化算法(Differential Evolution, DE)是一种为实数编码的全局优化问题设计的启发式搜索方法。DE的基本原理是通过对种群中的个体进行差分变异、交叉和选择操作来进化种群,使种群逐渐趋近于问题的全局最优解。 DE算法的基本步骤包括: 初始化:随…

Spring Boot - 用JUnit 5构建完美的Spring Boot测试套件

文章目录 PreJUnit 4 vs JUnit 5Junit5 常用注解栗子 Pre SpringBoot - 单元测试利器Mockito入门 SpringBoot - 应用程序测试方案 SpringBoot - SpringBootTest加速单元测试的小窍门 Spring Boot - Junit4 / Junit5 / Spring Boot / IDEA 关系梳理 package org.junit.jupit…

Excel VBA 变量,数据类型常量

几乎所有计算机程序中都使用变量&#xff0c;VBA 也不例外。 在过程开始时声明变量是一个好习惯。 这不是必需的&#xff0c;但有助于识别内容的性质&#xff08;文本&#xff0c;​​数据&#xff0c;数字等&#xff09; 在本教程中&#xff0c;您将学习- 一、VBA变量 变量是…

webpack:详解CopyWebpackPlugin,复制的同时修改文件内容

摘要 CopyWebpackPlugin 是一个强大的 Webpack 插件&#xff0c;用于将文件从源目录复制到构建目录。在本文中&#xff0c;我们将探讨 CopyWebpackPlugin 的一些常用 API&#xff0c;并提供示例代码。 在构建 Web 应用程序时&#xff0c;通常需要将一些静态文件&#xff08;如…

数据治理-定义数据治理运营框架

开发数据治理的基本定义很容易&#xff0c;但是创建一个组织采用的运营框架可能很困难。在构建组织的运营框架时需要考虑以下几个方面&#xff1a; 数据对组织的价值。如果一个组织出售数据&#xff0c;显然数据治理具有巨大的业务影响力。将数据作为最有价值事物的组织将需要…