如何高效的在一个字符串中找到最长的回文子串呢?下面我们根据代码来分析

首先,回文串有两种,一种是字符串的长度是偶数,另一种就是奇数。我们从字符串第二个字符开始,我们把当前起始字符叫做i。
       先检验奇数长度的字符串,对比该字符的前一个和后一个(i - 1 和 i + 1),一共三个字符(奇数个),如果前后字符相同则说明是回文串,就把当前字符与保存的回文palindromic进行比较,如果长度比较长,就把palindromic替换。然后接着首指针继续往前移动一格,后指针后移一格。继续判断,直到不是回文,或者首和末两者其中一个超过字符串合法长度。
       奇数长度判断完了,接着到偶数。偶数起始位置就是当前字符i和前一个字符(i - 1)。先判断这两个字符是否相等,如果相等,接着前后各移动一格,条件和奇数一样。
       当以上两个都判断完了之后,i++。

public String longestPalindrome(String s) {// 如果回字符串长度小于2直接返回if(s.length() < 2) {return s;}// 记录最长的回文串String palindromic = "";int j, k;for(int i = 1; i < s.length(); i++) {if(s.length() - i <= palindromic.length() / 2) {break;}int sum = 1;// 奇数长度判断for(j = i - 1, k = i + 1; j >= 0 && k < s.length(); j--, k++) {if(s.charAt(j) != s.charAt(k)) {break;}sum = sum + 2;}if(sum > palindromic.length()) {palindromic = s.substring(j + 1, k);}sum = 0;// 偶数长度判断for(j = i - 1, k = i; j >= 0 && k < s.length(); j--, k++) {if(s.charAt(j) != s.charAt(k)) {break;}sum = sum + 2;}if(sum > palindromic.length()) {palindromic = s.substring(j + 1, k);}}return palindromic;
}

在一个字符串中找出最长回文子串相关推荐

  1. leetcode 5 :Longest Palindromic Substring 找出最长回文子串

    题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...

  2. java最长回文子序列_在一个字符串里面怎么找出最长回文子序列长度

    回文字符串是什么?类似于level,noon,abbba这种,就是从左读和从右读都是同一个字符串.... 先说一下我的思路: 比如现在有字符串:"12212321" 1,先在每个字 ...

  3. 第六周作业(等值字串,KMP匹配,大整数相乘,最长公共子串,判断两个字符串是否匹配,最长回文子串,年号字串)

    目录 1.等值字串 2.KMP匹配 3.大整数相乘 4.最长公共子串 5.判断两个字符串是否匹配 6.最长回文字串 7.年号字串 补发一下,原来忘记发了. 1.等值字串 [问题描述]如果字符串的一个子 ...

  4. 在一个字符串中找出元音字母a,e,i,o,u出现的次数

    #include <stdio.h> #include <string.h> int main() {char c[100];gets(c);int a = 0,e = 0,i ...

  5. 数据结构-----最长回文子串

    题目描述 给定一个字符串,找出该字符串的最长回文子串.回文字符串指的就是从左右两边看都一样的字符串,如aba,cddc都是回文字符串.字符串abbacdc存在的回文子串有abba和cdc,因此它的最长 ...

  6. 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串 (转)...

    作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11969497. 声明:版权所有,转载请注明出处,谢谢 ...

  7. 字符串系列之最长回文子串

    2019独角兽企业重金招聘Python工程师标准>>> 问题描述:     给定一个字符串S=A1A2...An,要求找出其最长回文子串(Longest Palindromic Su ...

  8. Manachar算法(马拉车算法):快速求取最长回文子串

    当我们求取最长回文子串时,常见的方法就是中心扩散法,即从字符中心出发,向两边对比,检查是否相等,若等于,则继续检查,并使当前字符中心对应的最长回文子串长度加一,否则,结束该字符中心的回文检查,比较与当 ...

  9. hiho一下第一周 Hihocoder #1032 : 最长回文子串

    #1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

最新文章

  1. 调试模式和定时器,看门狗和嘀嗒定时器
  2. 设计师学习HTML/CSS之路-01
  3. VS2013(Visual Studio 2013)官方中文旗舰版安装激活方法
  4. 概率论 第三章 多维随机变量及其分布
  5. OpenCV图像颜色模型转换:cvtColor函数的使用
  6. infomixdb mysql_不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句
  7. springboot线程池使用
  8. Aittit rpc的实现协议 JSON-RPC XML-RPC . Ws协议webservice 目录 1. XML-RPC协议 1 1.1. JSON-RPC远程调用协议 - CieloSun
  9. Eclipse小工具 TCP/IP Monitor
  10. SFR算法详解(三)——浅析关于SFR的一些物理意义及原理
  11. DXGI抓屏优化扩展:鼠标功能+数据获取+多显示器捕获(屏幕共享源码)
  12. The field file exceeds its maximum permitted size of 1048576 bytes.
  13. 商场云WiFi靠谱吗
  14. c++读写json,JsonCpp配置
  15. java中的gc是什么意思的缩写_gc是什么意思(gc的缩写是什么意思)
  16. 基于药效团模型和分子动力学模拟对PTP-LAR抑制剂的研究
  17. 微信小程序 购物车简单实例
  18. excel中#N/A的解释同比环比基比画四象限图的小tips字符串截取函数substitute的深入理解
  19. 单片机自制时钟(年月日星期时分秒显示、按键校准)
  20. cs231n:assignment2——Q4: ConvNet on CIFAR-10

热门文章

  1. RAC 中GES/GCS原理
  2. Python判断两个字符串是否为父子集
  3. 身高测量仪红外传感测距模块应用方案 WTU201F2 B004 低功耗
  4. 寻找2022数智化小巨人系列报道:OA引领者蓝凌的进阶之路
  5. 2013年广州盛成php开发工程师第一轮笔试回顾
  6. 自学SpringBoot,超详细笔记
  7. 解决虚拟光驱导致物理光驱丢失问题
  8. 判断A图层完全包含B图层的要素--(1)空间查询之esriSpatialRelEnum.esriSpatialRelContains(包含)
  9. 清华大学计算机科学王昊,日照最好的三所高中,新鲜出炉!
  10. 【渝粤题库】国家开放大学2021春1396药事管理与法规(本)题目