怎么判断一个字符串的最长回文子串是否在头尾_每日一道算法题,让你的头脑更活跃(寻找最长回文子串)...

前言

  1. 最近准备把算法慢慢的捡起来,所以准备日更一道算法题目,难度自然是由简入难,所以同学们可以每天都来看看小编的更新。
  2. 日更时间定在每晚20:00,希望大家多多关注啦。
  3. 昨天就欠更了,简直就是打脸。过完年刚开工,比较忙,今天更新两道,晚上还会更新一道!!!!!

寻找最长回文子串

给定一个字符串s,寻找最长的回文子串。您可以假设s的最大长度为1000。

例1:

输入: “babad” 输出: “bab” 注意: “aba”也是一个有效的答案。

例2:

输入: “cbbd” 输出: “bb”

解题思路

  1. 我们先说一下什么是回文串:简单的来说,回文串就是某一个字符串左右对称即为回文串。
  2. 那么回文子串也就是在某一字符串中,包含的回文串。
  3. 我们如何判断或者是寻找回文串呢?我们了解到他具有左右对称的性质,当我们要确认某一个字符串是否为回文串时,我们可以从字符串的中心开始,向左右两边进行对比。贴一段代码:
f2651666-7513-eb11-8da9-e4434bdf6706.png
// 验证是否为回文串private boolean check(String s, int j, int k) { // s:字符串 j:中心下标 k:中心下标。  // 当字符串长度为奇数时,j=k // 当字符串长度为偶数是,j=k-1 while (j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)) { j--; k++; } // 判断是否两边循环到了开始和结尾。 if(j==0&&k==s.length()-1){ return true; } return false;}
  1. 那么寻找的方法也与上方代码大同小异。一起来看一下完整代码:
f6651666-7513-eb11-8da9-e4434bdf6706.png
f8651666-7513-eb11-8da9-e4434bdf6706.png
public class Test { private int start=0; // 定义回文串开始下标 private int maxLen=0; // 定义回文串最大长度  @Test public void test(){ // 输出答案 System.out.println(longestPalindrome("babad")); }  public String longestPalindrome(String s) { // 定义字符长度 int len = s.length(); // 判断长度如果小于2,即等于0或1,则直接返回当前字符串 if (len < 2) return s; // 定义循环,即将i作为回文串的中心进行查找或验证。 for (int i = 0; i < len - 1; i++) { // 假设答案回文串长度为奇数 findPalindrome(s, i, i);  // 假设答案回文串长度为偶数 findPalindrome(s, i, i + 1);  } // 从字符串中截取答案回文串 return s.substring(start, start + maxLen); } // 查找回文串 private void findPalindrome(String s, int j, int k) { // 以对称中心向左右比对字符以寻找回文串 while (j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)) { j--; k++; } //(k - j - 1)是本次查询获得的回文串长度 if (maxLen < k - j - 1) { // 修改回文串开始下标 start = j + 1; // 修改最大长度 maxLen = k - j - 1; } }}

最后说两句

  1. 所有的题目都有很多种解法,我的一定不是最好的,甚至可以说是比较低端的解法,希望大牛们多多指教!!!
  2. 如果朋友们对算法、编程有很大兴趣的话,可以私信我,大家一同探讨;相互学习、共同进步。
  3. 朋友们如果对这道题目有更好的解法,希望可以在评论中指出,让大家一起讨论学习。
  4. 最后感谢大家的阅读以及关注,谢谢大家!!!

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

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

相关文章

【LeetCode笔记】322. 零钱兑换(Java、动态规划)

文章目录题目描述思路 & 代码题目描述 和完全平方数基本上一样啦&#xff0c;但是我觉得这道题的判断 & 循环处理更恶心 思路 & 代码 相对于完全平方数&#xff0c;这里要考虑零钱数组无序&#xff0c;要先进行排序与此同时&#xff0c;还要考虑零钱数组的值并…

计算机主机接线视频教程,电脑主板跳线怎么接?电脑机箱与主板跳线接法图解教程...

电脑组装其实并不难&#xff0c;对于一个DIY老手三下五除二就组装好了&#xff0c;但对于新手装机来说&#xff0c;最大的难点就是主板与机箱之间的跳线的接法&#xff0c;那么电脑主板跳线怎么接&#xff1f;下面装机之家小编分享一下电脑机箱与主板跳线接法图解教程。这款机箱…

用计算机分析卫星云图 进行实时6,大学计算机应用基础期末考试试卷和答案A.doc...

大学计算机应用基础期末考试试卷和答案A试卷名称课程名称试卷(A)总 分题号一二三核分人题分7020.010复查人得分评分人得分??一、单选( 共 70分)1.“A”的ASCII码值(十进制)为65&#xff0c;则“D”的ASCII码值(十进制)为_________。A、70B、68C、62D、692.用计算机分析卫星云…

英特尔 超核芯显卡 620mac_英特尔也玩马甲?有关USB TypeC的冷知识你了解多少

文章选自公众号“电脑报”&#xff1a;英特尔也玩马甲&#xff1f;有关USB Type-C的冷知识你了解多少随着Type-C接口的不断发展&#xff0c;这个接口也成为越来越多设备的标配&#xff0c;除了出现在手机、平板电脑和笔记本电脑等移动设备上&#xff0c;显卡这样的设备也开始配…

【LeetCode笔记】394. 字符串解码(Java、递归、栈)

文章目录题目描述思路 & 代码更新版题目描述 开心&#xff01;&#xff01;独立思考字符串题&#xff0c;还AC了&#xff0c;成就感满满 XD难点应该是在于嵌套括号&#xff0c;那么这里实际上还要考虑到一个类似于括号匹配的事情谈到括号&#xff0c;那么大概率用到栈 思…

ad19pcb设置恢复默认_苹果手机便签怎么恢复系统默认的内容分割线?

苹果手机上虽然没有系统自带的便签app&#xff0c;但是可以添加使用第三方的敬业签。敬业签&#xff0c;是一款支持备忘内容云端同步并提醒的跨平台(Windows电脑﹑安卓手机﹑苹果iPhone手机﹑iPad﹑苹果电脑Mac端以及网页Web端)桌面便签软件&#xff0c;备忘效果更好&#xff0…

计算机运行卡英语怎么说,“芯片卡”英语怎么说

名词解释&#xff1a;芯片卡容量大&#xff0c;其工作原理类似于微型计算机&#xff0c;能够同时具备多种功能。芯片卡又分为纯芯片卡和磁条芯片复合卡&#xff0c;现在正以其高安全性和多功能应用已成为全球银行卡的发展趋势。你知道用英语怎么表达吗Chinese banks will promo…

【LeetCode笔记】剑指 Offer 56 . 数组中数字出现的次数(Java、位运算)

文章目录题目描述思路 & 代码题目描述 比 leetcode 136要难点注意&#xff1a;空间复杂度要求O(1)&#xff0c;否则用哈希表直接秒杀啦。昨天的笔试&#xff0c;还有刷的面经都有这道题。。。今天赶紧补补 思路 & 代码 相对于 leetcode 136&#xff0c;这边多了个分…

科学家用计算机模拟后确认 60个n原子,科学家用计算机模拟后确认,60个N原子可结合成N60分子。下列关于N60的叙述中正确的是A.N60是一种新型的化合物...

科学家用计算机模拟后确认&#xff0c;60个N原子可结合成N60分子。下列关于N60的叙述中正确的是A&#xff0e;N60是一种新型的化合物更多相关问题如图&#xff0c;已知点A是一次函数y&#xff1d;x&#xff0b;1与反比例函数图象在第一象限内的交点&#xff0c;点B在x轴的负半轴…

电脑计算器的快捷键_牛!这份金蝶财务软件使用手册+超全快捷键汇总送你,财务收好...

金蝶财务软件想要使用的好是有技巧的&#xff01;快捷键简易汇总&#xff1a;快捷键详细说明1、凭证处理①、摘要栏两种快速复制摘要的功能&#xff0c;在下一行中按“..”可复制上一条摘要&#xff0c;按“//”可复制第一条摘要。同时&#xff0c;系统还设计了摘要库&#xff…

【LeetCode笔记】415. 字符串相加(Java、字符串)

题目描述 不能直接把字符串转换成整数&#xff08;会溢出&#xff09;面试被问过&#xff0c;今天刷面经又刷到。。那就索性水一篇文吧&#xff01;更新&#xff1a;原题就是 leetcode 415 思路 & 代码 只要理好字符串s、字符串t、答案字符串的对应位关系就好啦&#x…

html表白earth,表白很感动的英语句子

表白很感动的英语句子13、在这快乐分享的时刻&#xff0c;思念好友的时刻&#xff0c;美梦成真的时刻&#xff0c;祝你—新年快乐&#xff0c;佳节如意!Wish you a happy new year and a good fortune in the coming year when we will share our happiness, think of our good…

opcua 入门简介 java_大二的学生自学Java有出路吗?

这个是技术&#xff0c;学好了必须是有出路的&#xff0c;当然你喜不喜欢还得看后面的学习情况&#xff0c;三天热火气的情况大有人在&#xff0c;更有甚者就是&#xff0c;系统培训完&#xff0c;上了半年的班了&#xff0c;后转行到别的也有&#xff0c;所以兴趣是自己的最大…

pandas离线安装

文章目录 方法一方法二 pandas离线安装 方法一 先在一个能上网的机器上&#xff0c;使用pip安装好pandas及依赖库 将装好的包打包&#xff0c;拷贝到不能上网的目标机上 cd /usr/lib/python3.10/site-packages tar cf pandas.tgz numpy* openpyxl* pandas* psutil* pygments*…

【LeetCode笔记】232. 用栈实现队列(Java、栈、队列)

题目描述 经典题了&#xff0c;貌似现在面试也有点喜欢问&#xff0c;今天补补题&#xff01;要实现均摊时间复杂度O(1)噢 思路 & 代码 用两个栈来实现&#xff1a;输出栈 & 输入栈输出栈 out&#xff1a;负责 pop、peek输入栈 in&#xff1a;负责 push关键点&…

如何安全使用计算机,如何安全的使用计算机

如何安全的使用计算机导语&#xff1a;关于电脑的使用&#xff0c;如何正确的安全的使用好电脑&#xff0c;其实很多人都会有这个意识。以下是小编精心整理的有关电脑安全的知识&#xff0c;希望对大家有所帮助。一是要注意环境。环境温度在15℃&#xff5e;35℃为宜&#xff0…

调节e18-d80nk的测量距离_地坪研磨机磨盘平整度的调节方法及好处

地坪研磨机磨盘平整度的调节方法及好处名词解释调节磨盘平整度主要是指将四个磨盘调到静止或运转时磨盘趋向处于同一个平面。 调节方法 1、采用一把高度卡尺或任意一把尺条测量准确磨盘面到箱体底部边沿距离2、采用10MM内六角扳手、调节M12的不锈钢内六螺丝&#xff08;如图1&…

【LeetCode笔记】225. 用队列实现栈(Java、队列、栈)

题目描述 感觉栈实现队列更简单&#xff0c;不过这个也还好写法有点像 JVM GC 里的复制算法 思路 & 代码 两个队列实现栈&#xff1a;from、tofrom&#xff1a;实际上的栈&#xff0c;存储元素就是按照栈的顺序来&#xff0c;负责pop、topto&#xff1a;辅助队列&#…

微型计算机最怕的是什么,为什么以前学生上“微机课”都要穿鞋套?老师:怕电脑中病毒...

原标题&#xff1a;为什么以前学生上“微机课”都要穿鞋套&#xff1f;老师&#xff1a;怕电脑中病毒前不久&#xff0c;知乎上一则问答短短一周便收获了近400万浏览量。“为什么小时候去计算机教室要穿鞋套&#xff1f;”看着网友们的回复&#xff0c;小酷想起了小学时期&…

iphone屏蔽系统更新_手贱更新了 iphone系统,想退回到原来的版本,这个方法简单易用...

应该有很多人都很烦iphone的系统更新&#xff0c;开着wifi一夜睡醒&#xff0c;就欢迎你来到最新系统&#xff0c;新版本出来之后&#xff0c;各种媒体消息铺天盖地而来&#xff0c;类似于呼吁大家赶快更新享用新功能&#xff0c;殊不知系统更新有两种&#xff0c;都不适合马上…