LeetCode题解(0214):通过在字符串前添加字符成为回文串的最短回文串(Python)
发布日期:2021-06-29 19:57:51
浏览次数:2
分类:技术文章
本文共 1434 字,大约阅读时间需要 4 分钟。
题目:(困难)
标签:字符串、双指针、递归、KMP算法
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N 2 ) O(N^2) O(N2) | O ( N ) O(N) O(N) | 464ms (23.10%) |
Ans 2 (Python) | O ( N 2 ) O(N^2) O(N2) | O ( N ) O(N) O(N) | 44ms (98.78%) |
Ans 3 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 56ms (92.39%) |
这道题就相当于从前往后找字符串中最长的回文串
解法一(暴力解法):
class Solution: def shortestPalindrome(self, s: str) -> str: N = len(s) for i in range(N, 0, -1): if s[:i] == s[:i][::-1]: return s[i:][::-1] + s[:i] + s[i:] return ""
解法二(双指针递归):
虽然最坏情况的时间复杂度没有变,但是平均情况的时间复杂度明显下降。
class Solution: def shortestPalindrome(self, s: str) -> str: N = len(s) idx1 = 0 for idx2 in range(N - 1, -1, -1): if s[idx1] == s[idx2]: idx1 += 1 if idx1 == N: return s return s[idx1:][::-1] + self.shortestPalindrome(s[:idx1]) + s[idx1:]
解法三(KMP算法):
class Solution: def shortestPalindrome(self, s: str) -> str: s_new = s + "#" + s[::-1] N = len(s_new) table = [0] * N # KMP失败函数 length = 0 # 当前匹配字符串长度 i = 1 # 当前坐标 while i < N: if s_new[length] == s_new[i]: length += 1 table[i] = length i += 1 else: if length > 0: length = table[length - 1] else: i += 1 length = 0 return s[table[-1]:][::-1] + s
转载地址:https://dataartist.blog.csdn.net/article/details/107996539 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月29日 04时58分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【iPhone】网络编程–一起来做网站客户端(一)
2019-04-30
使用test flight让别人运行你的app
2019-04-30
Andriod开发学习资源
2019-04-30
源代码学习笔记
2019-04-30
vxworks下select()的使用 .
2019-04-30
如何在使用Cocos2D中实现A星(A*)寻路算法
2019-04-30
iOS应用崩溃日志分析
2019-04-30
报文数据的txt文件 转换成wireshark可以识别的k12文件
2019-04-30
vue 大致总结一
2019-04-30
python面试总结 python同源策略 跨域问题(一)
2019-04-30
django中HttpResponse render redirect 使用和区别
2019-04-30
MySQL数据库的详细安装步骤
2019-04-30
python 基础 爬虫音乐资源案例
2019-04-30
python基础爬虫 视频的下载
2019-04-30
python中把图片 或者 数据存储到本地 用csv方式储存
2019-04-30
python中csv格式转换为excle格式
2019-04-30
爬取图片下载保存 例子详解 代码与注释
2019-04-30
python 在安装第三方库时候 怎样使用国内镜像源 实现快速下载
2019-04-30
python 爬取龙岭迷窟视频 对于视频格式m3u8 下载多个ts文件 合并成MP4
2019-04-30