java数据结构与算法刷题-----LeetCode647. 回文子串

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 直接使用中心扩展法即可。
  2. 对于其它方法,LeetCode第5题都有涉及
🏆LeetCode5:最长回文子串https://blog.csdn.net/grd_java/article/details/124666706
中心扩展法
  1. 对于不同的回文串,它的中心可能是1个字符,或者2个字符
  1. 例如abccba这样的字符串是回文串,以两个字符cc为中心
  2. abcccba这样的是以一个字符c为中心的回文串
  1. 所以我们可以从头到尾遍历字符串。然后每一次都考虑,两个字符为中心,和一个字符为中心,这两种情况来构建回文串。
  2. 确定中心后,只需要使用贪心的思想,不断扩展的比较两边。当前两边只要相等,那么整个字符串就是回文串。
  1. 例如abcccba。我们先拿到了c
  2. 然后向两边扩展比较,abcccba。我们发现两边相等。那么ccc就是一个回文串
  3. 再次向两边扩展abcccba,两边再次相等,那么bcccb就是一个回文串
  4. 再次向两边扩展abcccba两边再次相等,那么abcccba就是一个回文串
代码

在这里插入图片描述

class Solution {/**中心拓展回文串法,时间复杂度O(n^2).空间复杂度O(1)我们要统计所有回文串的个数,*/public int countSubstrings(String s) {int n = s.length(), ans = 0;//n为字符串长度,ans保存有几种回文串char c[] = s.toCharArray();//转换为char数组//中心扩展法经典步骤for(int i = 0; i < n;i++){//从左到右依次选择字符作为中心//找到以i位置字符为中间的回文串。abcccba以c为中心的回文串ans += expandAroundCenter(c,i,i);//处理1个字符作为中心的回文串//找到以i和i+1位置为中心的回文字符串。例如abccba这样的字符串是回文串,cc为中心ans += expandAroundCenter(c,i,i+1);//处理2个字符作为中心的回文串}return ans;}//找到回文串的核心逻辑,不断进行两边的扩展比较。private int expandAroundCenter(char[] c,int i, int j){int count = 0;//回文串个数while(i >= 0 && j < c.length && c[i]==c[j]){//如果满足回文串i--;j++;//继续判断count++;//每个回文串都记录}return count;}
}

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

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

相关文章

深度学习基础之《TensorFlow框架(3)—TensorBoard》

一、TensorBoard可视化学习 1、TensorFlow有一个亮点就是&#xff0c;我们能看到自己写的程序的可视化效果&#xff0c;这个功能就是TensorBoard 2、TensorFlow可用于训练大规模深度神经网络所需的计算&#xff0c;使用该工具涉及的计算往往复杂而深奥。为了方便TensorFlow程…

计算机网络——14CDN

CDN 视频流化服务和CDN&#xff1a;上下文 视频流量&#xff1a;占据着互连网大部分的带宽 Netflix&#xff0c;YouTube&#xff1a;占据37%&#xff0c;16%的下行流量 挑战&#xff1a;规模性-如何服务~1B用户&#xff1f; 单个超级服务器无法提供服务&#xff08;为什么&am…

浅谈电商场景中的扣除库存问题

库存 一、场景二、扣减时机1.下单时扣库存2.支付完成扣库存3.预扣除 三、库存存储方案1.数据库存储2.数据库缓存混合存储 四、整体方案1.单数据库方案2.主从数据库方案3.主从数据库缓存方案4.数据库缓存混合存储 五、其他情况1.秒杀QPS过高2.Redis QPS过高3.Master DB QPS过高4…

docker (六)-进阶篇-数据持久化最佳实践MySQL部署

容器的数据挂载通常指的是将宿主机&#xff08;虚拟机或物理机&#xff09;上的目录或文件挂载到容器内部 MySQL单节点安装 详情参考docker官网文档 1 创建对应的数据目录、日志目录、配置文件目录(参考二进制安装&#xff0c;需自己建立数据存储目录) mkdir -p /data/mysq…

phpstrom创建thinkphp项目

安装php和composer 参考 安装phpstrom 创建项目 查看thinkphp版本 https://packagist.org/packages/topthink/think 打开所在项目编辑配置 即可调试运行

helm部署gitlab-runner问题解决

关于.gitlab-ci.yml中build镜像时&#xff0c;docker守护进程未启动错误 问题截图 解决方法 conf.toml添加 [[runners.kubernetes.volumes.host_path]]name "docker"mount_path "/var/run/docker.sock"read_only falsehost_path "/var/run/dock…

相机图像质量研究(31)常见问题总结:图像处理对成像的影响--图像差

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…

《Go 简易速速上手小册》第3章:数据结构(2024 最新版)

文章目录 3.1 数组与切片&#xff1a;Go 语言的动态队伍3.1.1 基础知识讲解3.1.2 重点案例&#xff1a;动态成绩单功能描述实现代码扩展功能 3.1.3 拓展案例 1&#xff1a;数据分析功能描述实现代码扩展功能 3.1.4 拓展案例 2&#xff1a;日志过滤器功能描述实现代码扩展功能 3…

【JavaSE篇】——异常(一万字让你了解异常的全方位知识)

目录 &#x1f388;什么是异常 &#x1f6a9;算术异常 &#x1f6a9;数组越界异常 &#x1f6a9;空指针异常 &#x1f6a9;输入不匹配异常 &#x1f388;异常的体系结构 &#x1f388;异常的分类 &#x1f6a9;运行时异常(非受查异常) &#x1f6a9;编译时异常(受查异常…

什么样的分类器才是最好的

我们总想要一个最好的算法&#xff0c;分类也同样如此 但对某一个任务&#xff0c;某个具体的分类器不可能同时满足或提高所有上面介绍的指标。 如果一个分类器能正确分对所有的实例&#xff0c;那么各项指标都已经达到最优&#xff0c;但这样的分类器往往不存在。比如之前说…

数据结构第十六天(二叉树层序遍历/广度优先搜索(BFS)/队列使用)

目录 前言 概述 接口 源码 测试函数 运行结果 往期精彩内容 前言 从前的日色变得慢&#xff0c;车&#xff0c;马&#xff0c;邮件都慢&#xff0c;一生,只够爱一个人。 概述 二叉树的层序遍历可以使用广度优先搜索&#xff08;BFS&#xff09;来实现。具体步骤如下&…