leetcode系列--5.最长回文字串
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.最长回文字串相关推荐
- 求字符串的最长回文字串 O(n)
昨天参加了某公司的校园招聘的笔试题,做得惨不忍睹,其中就有这么一道算法设计题:求一个字符串的最长回文字串.我在ACM校队选拔赛上遇到过这道题,当时用的后缀数组AC的,但是模板忘了没写出代码来. 回头我 ...
- 力扣HOT100算法题5:最长回文字串
文章目录 一.题目 二.方法一:解题思路 三.方法一:代码解析 四.方法二:动态规划 五.方法二:代码解析 一.题目 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1:输入:s = &quo ...
- LeetCode:409、最长回文串
409.最长回文串 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 先记录每个字符出现的次数: 然后除2在乘2:奇数次则会取最大偶数次:偶数次则不变: 然后判断是否存在奇数次的字符:若存在且 ...
- 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)
leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: " ...
- ural 1297 O(nlogn) 后缀数组求最长回文字串
把原串复制一份反过来接在原串后面,中间用没出现过的字符隔开,然后跑后缀数组,在原创枚举每一个位为回文中心(分奇偶讨论),则回文串长度相当于原串与反串对应位置的lcp,所以先用ST预处理,然后查询.复杂 ...
- Lc5-最长回文字串
Lc5-最长回文子串 枚举字符串中的每一个字符,从当前下标开始想两边扩散,知道i 和 j指向的字符不相等就判断结果需不需要更新,如果他们之间的长度比已经res大就更新结果. js 求数组求字符串的长度 ...
- 【LeetCode系列】最长回文子串(双指针中心扩散)与可怜的小猪(老鼠毒药问题)
⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[最长回文子串]和[可怜的小猪],展示语言java.
- 算法_Longest Palindromic Substring(寻找最长回文字串)
题目:Given a string S, find the longest palindromic substring in S. You may assume that the maximum le ...
- poj_1974,最长回文字串manacher
时间复杂度为O(n),参考:http://bbs.dlut.edu.cn/bbstcon.php?board=Competition&gid=23474 #include<iostrea ...
最新文章
- 比特币现金矿工商议,为开发提供部分奖励
- MFC 多文档中同时打开多个文档
- 计算机怎么模拟人,计算机能不能模拟人的思维?
- 帧同步_什么是帧同步什么是状态同步
- Mysql数据类型之浮点与二进制型数据使用案例总结
- 老照片特效 php,一键制作破旧复古老照片特效PS动作
- 分享:一款快速传输大文件、支持英文版的工具
- python分布式存储文件_python如何分布式存储文件的方法
- go设计模式思维导图
- 设计模式——中介者模式
- React开发(149):ant design控制是否必填
- 查看此docker网络连接模式_Docker:网络模式详解
- c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc
- Silverlight4 麦克风应用-录音机
- spring 动态代理_Spring中的两种动态代理
- python智能写诗的程序_【百度大脑新品体验】智能写诗与智能春联
- 中兴新支点操作系统_中兴发国产操作系统新支点,好不好用测了才知道
- 2014TI杯(D题)带啸叫检测与抑制的音频功率放大器
- 初来乍到:新用户冷启的算法技巧
- AV1代码学习:编码端aomenc.c的main函数
热门文章
- C# Dictionary分别按Key,Value值升降序排序
- arch linux忘记密码,ArchLinux 无密码Samba 配置
- golang 批量查询再删除
- 有确定项微分方程的matlab程序,微分方程的数值解法matlab四阶龙格—库塔法课件...
- 3dmax渲染哪个云渲染平台做得比较好?
- Sofia-SIP辅助文档二四 - Sofia SIP用户代理库 - features特性模块
- 豆豆趣事[2011年03月]
- 基于token实现登陆php,ThinkPhp5 实现token登陆
- CVPR-2020笔记 | 文末送书
- 最新巨潮加密参数破解--实测可用