打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【LeetCode Hot 100 最长回文子串】

新年的刷的第一题,题目如下:

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

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:

输入:s = "cbbd"
输出:"bb"
示例 3:

输入:s = "a"
输出:"a"
示例 4:

输入:s = "ac"
输出:"a"
 

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。非商业转载请注明出处。

初始思路:

刚开始的想法是想每个字符开始向左右进行拓展,将全部的字符循环一遍,最后就可以找到最长的回文字符串。但自己感觉这种方法时间复杂度太高了,就没往下想了,唉,太不自信了。

答案思路:

答案写的非常详细,分了三种方法,第三种不讲,有点复杂,首先要说的是和自己初始子路类似的解法-中心扩展算法,废话不多说,直接上代码:

<,> getLongest( & s, left,(left>=&&right<s.size()&&s[left]==--++ {left+,right- longestPalindrome( start=,end=( i=;i<s.size();i++==getLongest(s,i,i+(right1-left1>end-==(right2-left2>end-== s.substr(start,end-start+

答案中介绍的第二种方法是动态规划,直接看代码:

 longestPalindrome( strReturn=( len=;len<s.size();len++( i=;i<s.size()-len;i++(len=== (len==+len]=s[i]==s[i++len]=dp[i+][i+len-]&&(s[i]==s[i+(dp[i][i+len]&&len+>=s.substr(i,len+

两种算法的时间和空间复杂度对比如下:

        时间复杂度    空间复杂度

中心扩展算法:    O(n*n)                  O(1)

动态规划:   O(n*n)     O(n*n)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【小Y学算法】⚡️每日LeetCode打卡⚡️——5.最长回文子串
最长回文子串
LeetCode实战:最长回文子串
LeetCode刷题实战3:最长不重复子串
LeetCode 5. 最长回文子串(动态规划)
2015校招笔试面试算法总结之蓝汛笔试 - 推酷
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服