回文串总结

题目汇总:

9. 回文数(整型转字符串)

266. 回文排列

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

680. 验证回文字符串 Ⅱ(左右指针)


一 数字类型回文串

1、9. 回文数

1)问题描述

整型回文串判断

2)思路:

借助带余除法从个位提取整型数据各位数字,再反转数字整合在一起,最后和输入数据进行比对。


具体代码

(类似技巧题目:leetcode 7 整数反转,需要考虑反转后溢出情况)

二、字符串回文排列题

1、266. 回文排列

1)问题描述

字符串回文排列

2)思路:

建立哈希映射map_array[26],把字符串的各个字符映射到数组特定下标,数组中各下标对应的值为该下标(字符)出现的次数。根据回文串的特点,只要满足数组中各元素的值最多只有一个奇数即可。

2、5. 最长回文子串

1)问题描述

求字符串最长回文子串


约束

2)思路:

(1)动态规划

动态规划分析

核心代码


该算法时间复杂度O(n^2),状态总数为O(n^2),每一状态需要转移的时间为O(1).

空间复杂度O(n^2)

(2)中新扩展法

遍历字符串,假定遍历的元素是回文中心,并向两端进行扩展。

核心代码(C编写)


中心扩展法

该算法时间复杂度O(n^2),每个回文中心最多向外扩展O(n)次。

空间复杂度O(1)

(3)Manacher算法(马拉车算法)

核心思想:

在中心扩散法基础上进行优化,充分利用每次遍历的结果,预测未遍历元素若作为回文中心,可能达到的长度。这样的好处是充分利用已经遍历过的信息,把时间复杂度降为线性级别。(像类似的还有KMP算法)

假设字符串s构成回文串,s[center]为串s的回文中心,利用字符串元素关于回文中心对称性特点,来判断s[i]右侧元素若作为回文中心,可能达到的长度。

理解:https://www.cxyxiaowu.com/2665.html

马拉车算法大致思路

部分代码

字符串预处理


马拉车算法核心


返回结果

3、680. 验证回文字符串 Ⅱ

1)问题描述

验证回文串字符问题描述

2)思路

从两侧往中间收缩判断,遇到不符合情况,枚举可能性。

3)代码实现

回文串字符代码实现
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容