首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏LeetCode解题

    5. 最长回文

    link给你一个字符 s,找到 s 中最长的回文。如果字符的反序与原始字符相同,则该字符称为回文字符。 break}b, e := i, ifor e < len(s)-1 && s[e+1] == s[e] {e++// 循环结束后,s[b:e+1]是一相同的字符}// 下一个回文的`正中间段`的首字符只会是

    4.6K10编辑于 2024-02-11
  • 来自专栏challenge filter

    Leetcode 5: 最长回文

    5 最长回文 找到的题解: https://github.com/youngyangyang04/leetcode-master/blob/master/problems/0005.最长回文.md 返回其最长的回文。 朴素暴力写法 最先想到的当然是朴素的暴力写法:从头开始枚举所有的,直到找到回文 #include <iostream> using namespace std; bool judgePalindrome 考虑到回文的嵌套特性同一回文点记录回文中心和回文上界,如果长度为偶数则记录0.5。 这个思路的一个基本想法是:对于一个更长的字符,如果以其中心点的更小长度内曾经探明没有回文,那么这个子一定不回文。

    36310编辑于 2022-06-17
  • 来自专栏悟道

    5. 最长回文

    给你一个字符 s,找到 s 中最长的回文。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。

    41330发布于 2021-06-01
  • 来自专栏yuyy.info技术专栏

    LeetCode:最长回文_5

    题目 给你一个字符 s,找到 s 中最长的回文。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 " 输出:"a" 示例 4: 输入:s = "ac" 输出:"a" 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母(大写和/或小写)组成 Related Topics 字符

    29200编辑于 2022-06-28
  • 来自专栏脑洞前端

    5. 最长回文

    题目描述 给定一个字符 s,找到 s 中最长的回文。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 思路 这是一道最长回文的题目,要我们求出给定字符的最大回文。 ? 解决这类问题的核心思想就是两个字“延伸”,具体来说 如果一个字符是回文,那么在它左右分别加上一个相同的字符,那么它一定还是一个回文 如果一个字符不是回文,或者在回文左右分别加不同的字符,得到的一定不是回文 关键点 ”延伸“(extend) 代码 /* * @lc app=leetcode id=5 lang=javascript * * [5] Longest Palindromic Substring

    74330发布于 2019-09-16
  • 来自专栏张伦聪的技术博客

    5. 最长回文

    给定一个字符 s,找到 s 中最长的回文。你可以假设 s 的最大长度为1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。 如下图;再引入一个辅助数组p[i]表示对应i索引字符为中心的最长回文半径。 如p[1]表示s_new[1]也就是#为中心对应最长回文半径为1,就是最长回文为#,半径为1即#; p[2]表示s_new[2]也就是a为中心对应最长回文半径为2,就是最长回文为#a# ,半径为#a; … p[5]表示s_new[5]也就是#为中心对应最长回文半径为5,就是最长回文#a#b#b#a#,半径为#a#b#; … 3.设当前已知的最长回文中心为id,mx i为中心的半径 //i半径不能大于mx-i所以用一个min函数比较。

    1.1K10编辑于 2022-10-26
  • 来自专栏软件工程

    5. 最长回文

    核心思路: 1.看到这题目很容易想到回文序列其实就是中心对称字符,我们只要从中心开始找找到两边字符不同的位置即停止即可,这样按个去遍历 本结题思路有几点特别巧妙,写完之后感觉挺爽 2.本题目把相同的一段元素看成一个元素比较这段元素两边的字符即可

    27820编辑于 2021-12-23
  • 来自专栏掘金安东尼

    日拱算法,按字典排在最后的

    题目: 给你一个字符 s ,找出它的所有并按字典排列,返回排在最后的那个子。 按字典排在最后的是 "bab"。 示例 2: 输入:s = "leetcode" 输出:"tcode" 题目来源:按字典排在最后的 题解: 这题题干很简洁,比什么兔子问题、果篮问题好理解很多。 我们发现: 当前面一截相同,那么肯定是越长的字典越大;比如 abcdX 必定要大于 abcd; 因此以某个字符 x 开头的最大的一定是以 x 所在位置为起点、s 最后一个字符为终点的 并取其中字典最大的 let index=-1; let ans = "" while((index=s.indexOf(char,index+1))>=0){

    50710编辑于 2022-09-22
  • 来自专栏用户画像

    Leetcode No.5 最长回文

    给定一个字符 s,找到 s 中最长的回文。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 方法一:暴力匹配 (Brute Force) 根据回文的定义,枚举所有长度大于等于 22 的,依次判断它们是否是回文; 在具体实现时,可以只针对大于 “当前得到的最长回文长度”的进行“回文验证”; 在记录最长回文的时候,可以只记录“当前的起始位置”和“长度”,不必做截取。

    33850发布于 2020-08-04
  • 来自专栏算法半岛

    LeetCode-5 最长回文

    > 题目:5. 最长回文 > 难度:中等 > 分类:字符 > 解决方案:双指针 今天我们学习第5题最长回文,这是一个字符的中等题,像这样字符的题目经常作为面试题来考察面试者算法能力和写代码能力,因此最好能手写出该题 示例2: 输入: "cbbd"输出: "bb" 分析 读完这道题后,我们发现一个新名词回文,什么是回文? ,查找最长回文 extendPalindrome(s, i, i); // 回文为偶数时,查找最长回文 extendPalindrome Github地址 LeetCode-5 最长回文:https://github.com/JacobLei/leetcode/blob/master/src/main/java/A5_LongestPalindromicSubstring.java

    62540发布于 2019-06-26
  • 来自专栏前端小叙

    leetcode 5. 最长回文

    给你一个字符 s,找到 s 中最长的回文。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 res:ans; } } } return ans; }; 解法参考回文实现方案。

    30440编辑于 2022-11-18
  • 来自专栏编程理解

    Leetcode 5. 最长回文

    题目描述 给定一个字符 s,找到 s 中最长的回文。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 表示字符中下标 ? 到 ? 的字符是否为回文,包括首尾下标字符,若 ? 。则有: ? 借助二维数组记录 ? 记录 ? 状态。 是否为回文。 对于下标 ? 的一维数组空间 ? ,如果 ? ,则 ? 取决于 ? 。这里可以使用一维数组 ? 记录状态,则 ? 取决于 ? 。 的计算复杂度,解法3采用 manacher 算法,首先使用字符中不存在的字符,扩充原始字符,以此忽略奇数和偶数长度的影响。然后由左向右遍历字符中元素,以每个元素为对称轴,扩散求回文长度。 若是填充后进行常规的扩散求回文,则复杂度依然是 ? ,manacher 算法中记录已访问回文最右元素下标 maxrt,及当前的对称轴下标 cen。

    96821发布于 2019-05-17
  • 来自专栏悠扬前奏的博客

    LeetCode-5. 最长回文

    题目 描述 给定一个字符 s,找到 s 中最长的回文。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 解答 思路 遍历每个字符,查找以该字符开头的回文最大长度 如果中间部分相同,需要找到下一个不同的字符 如果找到回文字符,返回中间位置所在的位置, } return s.substring(range[0], range[1] + 1); } /** * 从最低位,查找可能的最长的回文 * * @param str 原始字符 * @param low 低位 * @param range 范围 * @return 高位

    32910发布于 2020-06-08
  • 来自专栏freesan44

    PTA 7-5 列 (25 分)

    题目 是一个字符中连续的一部分,而列是字符中保持字符顺序的一个子集,可以连续也可以不连续。例如给定字符 atpaaabpabtt,pabt是一个,而 pat 就是一个列。 现给定一个字符 S 和一个列 P,本题就请你找到 S 中包含 P 的最短。若解不唯一,则输出起点最靠左边的解。 输入格式: 输入在第一行中给出字符 S,第二行给出 P。 输出格式: 在一行中输出 S 中包含 P 的最短。若解不唯一,则输出起点最靠左边的解。

    39710编辑于 2021-12-06
  • 来自专栏freesan44

    PTA 7-5 列 (25 分)

    题目 是一个字符中连续的一部分,而列是字符中保持字符顺序的一个子集,可以连续也可以不连续。例如给定字符 atpaaabpabtt,pabt是一个,而 pat 就是一个列。 现给定一个字符 S 和一个列 P,本题就请你找到 S 中包含 P 的最短。若解不唯一,则输出起点最靠左边的解。 输入格式: 输入在第一行中给出字符 S,第二行给出 P。 输出格式: 在一行中输出 S 中包含 P 的最短。若解不唯一,则输出起点最靠左边的解。

    45940发布于 2021-09-10
  • 来自专栏Michael阿明学习之路

    序列构造的最长回文的长度(最长回文

    题目 给你两个字符 word1 和 word2 ,请你按下述方法构造一个字符: 从 word1 中选出某个 非空 序列 subsequence1 。 从 word2 中选出某个 非空 序列 subsequence2 。 连接两个子序列 subsequence1 + subsequence2 ,得到字符。 返回可按上述方法构造的最长 回文 的 长度 。 如果无法构造回文,返回 0 。 字符 s 的一个 序列 是通过从 s 中删除一些(也可能不删除)字符而不更改其余字符的顺序生成的字符。 示例 1: 输入:word1 = "cacb", word2 = "cbba" 输出:5 解释:从 word1 中选出 "ab" ,从 word2 中选出 "cba" ,得到回文 "abcba" 。 最长回文序列(动态规划) 将两个字符拼接,题目要求非空,在516题基础上,稍加限制即可 class Solution { public: int longestPalindrome(string

    80410发布于 2021-09-07
  • 来自专栏笔记分享

    力扣5-最长回文

    原题链接:https://leetcode.cn/problems/longest-palindromic-substring/难度:中题目描述给你一个字符 s,找到 s 中最长的回文。 示例 2:输入:s = "cbbd"输出:"bb"提示:1 <= s.length <= 1000s 仅由数字和英文字母组成解题图片思路描述回文即对称位置的值相等,判断是否为回文,需要注意两种情况字串长度为奇数字串长度为偶数先分析字串长度为奇数的情况奇数时相对容易 *LEFT和*RIGHT不相等,则统计此时回文的长度不能使用RIGHT-LEFT+1统计字符长度,因为此时指针指向的值不相等,此方法求出的长度比实际长度多2,因此应该用RIGHT-LEFT-1统计字符长度将每轮循环的结果与当前统计的最大值作比较当 } return result; }};运行效果141 / 141 个通过测试用例执行用时: 16 ms内存消耗: 9.1 MB图片加break及时跳出当目前的最长回文长度超过剩余字符长度的两倍时 ,在循环移动已无意义,因为接下来的长度一定不会超过目前的长度代码实现class Solution {public: int search(const string& s, int left,

    48400编辑于 2023-02-18
  • 来自专栏笔记分享

    力扣5-最长回文

    原题链接:https://leetcode.cn/problems/longest-palindromic-substring/ 难度:中 题目描述 给你一个字符 s,找到 s 中最长的回文。 示例 2: 输入:s = “cbbd” 输出:“bb” 提示: 1 <= s.length <= 1000 s 仅由数字和英文字母组成 解题 思路描述 回文即对称位置的值相等,判断是否为回文 如果不相等,移动CENTER,重新调整LEFT和RIGHT的位置,开始新一轮的判断 如果本轮判断结果是*LEFT和*RIGHT不相等,则统计此时回文的长度 不能使用RIGHT-LEFT+1统计字符长度 return result; } }; 运行效果 141 / 141 个通过测试用例 执行用时: 16 ms 内存消耗: 9.1 MB 加break及时跳出 当目前的最长回文长度超过剩余字符长度的两倍时 ,在循环移动已无意义,因为接下来的长度一定不会超过目前的长度 代码实现 class Solution { public: int search(const string& s, int

    46040编辑于 2023-02-21
  • 来自专栏Michael阿明学习之路

    LeetCode 5. 最长回文(动态规划)

    题目 给定一个字符 s,找到 s 中最长的回文。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 回文(DP) LeetCode 516. 最长回文序列(动态规划) 2.1 自己写的DP 自己写的DP,效率比较差,O(n2)O(n^2)O(n2) 时间复杂度 从长度1开始遍历长度,具体见注释 class Solution { public { for(i = 0; i < n-len; ++i) { if(dp[i][i+len-1])//【i,i+len-1】是回文 i,maxLen); } } } return ans; } }; 1440 ms 202.3 MB,击败了 5%

    66020发布于 2020-07-13
  • 【Leetcode】5.最长回文(Manacher算法)

    算法核心思想 因为是回文,所以的对称位置上的字符可以共用一些信息。 例如:abaeaba是以e为中心的回文,可以看到左边的b最长的回文长度为3(aba),那么右边的长度也就至少为3(这一点要注意,是至少为3,但有可能更长,假如字符的最后再加个e就更长了)。 算法步骤 预处理字符: 把字符每个字符中间都插入一个符号,并且在开头和结尾的位置也插入两个不同的符号。这样的目的是避免偶数长度的回文在计算中造成麻烦。 对于每个字符,先判断它是否位于某个回文内,如果是的话,那么以它为中心的的长度至少为对称位置上的长度;否则,就只能依次搜索。 代码 /* * @lc app=leetcode.cn id=5 lang=cpp * * [5] 最长回文 */ class Solution { public: string longestPalindrome

    20810编辑于 2025-08-27
领券