leetcode系列–第5题.最长回文字串

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

子串和子序列的区别:
子串:子串是指一个字串中连续的字串
子序列:子序列是指一个字串中非连续的字串

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
// 暴力解法
// 循环字符串 判断所有可能存在的情况,然后判断是否符合条件
// 此处 j - i + 1 > maxLen 判断条件可以帮我们把条件上限提高 稍微提高效率
function longestPalindrome(s) {/*** 判断回文字符串* */var isPalindrome = function (s, l, r) {// s 字符串// l 左指针// r 右指针while (l < r) {if (s[l] != s[r]) {return false}l++r--}return true}let length = s.length;let begin = 0, // 开始位置maxLen = 1; // 截取长度if (length < 2) {return s}for (let i = 0; i < length - 1; i++) {for (let j = i + 1; j < length; j++) {if (j - i + 1 > maxLen && isPalindrome(s, i, j)) {begin = imaxLen = j + 1 - i}}}return s.substr(begin, maxLen)
}
// 中心向两边扩展法
// 以字符串的每个子元素为中心构建奇数回文字符串,
// 以字符串的每个子元素以及字符串+1为中心构建偶数回文字符串
var longestPalindrome = function (s) {var length = s.length;let res = ""if (length < 2) {return s}// 判断是否回文var isPalindrome = function (s, l, r) {while (l >= 0 && r < length && s[l] === s[r]) {l--r++}return s.substr(l + 1, r - l - 1)}for (let i = 0; i < length; i++) {let s1 = isPalindrome(s, i, i) // 以i为中心的奇数字符串let s2 = isPalindrome(s, i, i + 1) // 以i和i+1为中心的偶数字符串res = res.length > s1.length ? res : s1res = res.length > s2.length ? res : s2}return res
};

leetcode系列--5.最长回文字串相关推荐

  1. 求字符串的最长回文字串 O(n)

    昨天参加了某公司的校园招聘的笔试题,做得惨不忍睹,其中就有这么一道算法设计题:求一个字符串的最长回文字串.我在ACM校队选拔赛上遇到过这道题,当时用的后缀数组AC的,但是模板忘了没写出代码来. 回头我 ...

  2. 力扣HOT100算法题5:最长回文字串

    文章目录 一.题目 二.方法一:解题思路 三.方法一:代码解析 四.方法二:动态规划 五.方法二:代码解析 一.题目 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1:输入:s = &quo ...

  3. LeetCode:409、最长回文串

    409.最长回文串 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 先记录每个字符出现的次数: 然后除2在乘2:奇数次则会取最大偶数次:偶数次则不变: 然后判断是否存在奇数次的字符:若存在且 ...

  4. 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)

    leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: " ...

  5. ural 1297 O(nlogn) 后缀数组求最长回文字串

    把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询.复杂 ...

  6. Lc5-最长回文字串

    Lc5-最长回文子串 枚举字符串中的每一个字符,从当前下标开始想两边扩散,知道i 和 j指向的字符不相等就判断结果需不需要更新,如果他们之间的长度比已经res大就更新结果. js 求数组求字符串的长度 ...

  7. 【LeetCode系列】最长回文子串(双指针中心扩散)与可怜的小猪(老鼠毒药问题)

    ⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[最长回文子串]和[可怜的小猪],展示语言java.

  8. 算法_Longest Palindromic Substring(寻找最长回文字串)

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

  9. poj_1974,最长回文字串manacher

    时间复杂度为O(n),参考:http://bbs.dlut.edu.cn/bbstcon.php?board=Competition&gid=23474 #include<iostrea ...

最新文章

  1. 比特币现金矿工商议,为开发提供部分奖励
  2. MFC 多文档中同时打开多个文档
  3. 计算机怎么模拟人,计算机能不能模拟人的思维?
  4. 帧同步_什么是帧同步什么是状态同步
  5. Mysql数据类型之浮点与二进制型数据使用案例总结
  6. 老照片特效 php,一键制作破旧复古老照片特效PS动作
  7. 分享:一款快速传输大文件、支持英文版的工具
  8. python分布式存储文件_python如何分布式存储文件的方法
  9. go设计模式思维导图
  10. 设计模式——中介者模式
  11. React开发(149):ant design控制是否必填
  12. 查看此docker网络连接模式_Docker:网络模式详解
  13. c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc
  14. Silverlight4 麦克风应用-录音机
  15. spring 动态代理_Spring中的两种动态代理
  16. python智能写诗的程序_【百度大脑新品体验】智能写诗与智能春联
  17. 中兴新支点操作系统_中兴发国产操作系统新支点,好不好用测了才知道
  18. 2014TI杯(D题)带啸叫检测与抑制的音频功率放大器
  19. 初来乍到:新用户冷启的算法技巧
  20. AV1代码学习:编码端aomenc.c的main函数

热门文章

  1. C# Dictionary分别按Key,Value值升降序排序
  2. arch linux忘记密码,ArchLinux 无密码Samba 配置
  3. golang 批量查询再删除
  4. 有确定项微分方程的matlab程序,微分方程的数值解法matlab四阶龙格—库塔法课件...
  5. 3dmax渲染哪个云渲染平台做得比较好?
  6. Sofia-SIP辅助文档二四 - Sofia SIP用户代理库 - features特性模块
  7. 豆豆趣事[2011年03月]
  8. 基于token实现登陆php,ThinkPhp5 实现token登陆
  9. CVPR-2020笔记 | 文末送书
  10. 最新巨潮加密参数破解--实测可用