最长的回文子串--题解
最长的回文子串–题解
题目描述
该题为leetcode的第五题

给定一个字符串,让我们找出其中最长的回文子串。
题目解析
其实这道题的做法很多种:
暴力解法:这是最简单的解决方法,我们只需要将所有的子串列出来,然后找出其中所有的子串,判断是否为回文子串,并且找出其中最大值。我尝试了一下leetcode给了我超时,效率可想而知(手动狗头
动态规划:这道题也可以使用动态规划的思想,P*(i,j)为i到j是否是回文子串。状态转移方程式:P*(i,j)=P(i+1,j−1)∧(S**i==S**j),最后提交效率也并不高,动态规划的解题方法可以去参考一下官方题解,这里主要讲解下一个解题方法
中心扩散:遍历字符串,每一个元素都向外扩散,找到每一个元素向外扩散最长的回文子串然后记录一下,最后返回即可,但是有几点需要特别注意:当前后元素相同时需要特别注意,将前后两个元素当作中心向外扩散即可;记录每一个最长子串时用拷贝的方式会造成很大的消耗,我们可以记录每个回文子串的索引,最后函数返回时在进行拷贝
中心扩散–golang实现
1 | func longestPalindrome(s string) string { |
- Post title: 最长的回文子串--题解
- Create time: 2021-03-24 10:48:16
- Post link: post/43363.html
- Copyright notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.
Comments