LeetCode题解(0131):分割回文串(Python)
发布日期:2021-06-29 20:15:58
浏览次数:3
分类:技术文章
本文共 1220 字,大约阅读时间需要 4 分钟。
题目:(中等)
标签:回溯算法、字符串
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( 2 N ) O(2^N) O(2N) | O ( N 2 ) O(N^2) O(N2) | 112ms (47.05%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution: def __init__(self): self.ans = [] self.now = [] self.s = "" self.is_palindrome = [] self.size = 0 def partition(self, s: str) -> List[List[str]]: self.size = len(s) self.s = s # 计算是否为回文串 self.is_palindrome = [[False] * self.size for _ in range(self.size)] for r in range(self.size): for l in range(r, -1, -1): if s[l] == s[r] and (r - l <= 2 or self.is_palindrome[l + 1][r - 1]): self.is_palindrome[l][r] = True self.dfs(0, 0) return self.ans def dfs(self, i1, i2): if i2 == self.size - 1: if self.is_palindrome[i1][i2]: self.now.append(self.s[i1:i2 + 1]) self.ans.append(list(self.now)) self.now.pop() else: # 在当前位置切分 if self.is_palindrome[i1][i2]: self.now.append(self.s[i1:i2 + 1]) self.dfs(i2 + 1, i2 + 1) self.now.pop() # 不在当前位置切分 self.dfs(i1, i2 + 1)
转载地址:https://dataartist.blog.csdn.net/article/details/112603764 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月04日 22时38分37秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
OPPO A37M刷机
2019-04-30
通过代理使用远程桌面(Mstcs)
2019-04-30
XP下安装VS2003 ,安装先决条件IIS后,提示未安装frontpage服务器扩展
2019-04-30
linux中的mail命令
2019-04-30
如何排除网络故障1:常见的问题和解决这些问题的工具
2019-04-30
Bypass交换机-确保关键链路的高可用性 (HA)
2019-04-30
如何实现网络端到端监控
2019-04-30
如何排除网络故障2:解决网络取证问题
2019-04-30
虹科方案|虹科Vdoo安全平台-D-Link路由器的安全漏洞
2019-04-30
弘辽科技:怎么在淘宝上开公益店铺?怎么设置公益宝贝?
2019-04-30
弘辽科技:做母亲、还是创业?我做了一个双项选择题
2019-04-30
弘辽科技:夜经济 偷偷长成36万亿!
2019-04-30
弘辽科技:从导购、电商到直播社区,蘑菇街为何做不好电商生意?
2019-04-30
弘辽科技:淘宝开店后就可以直播吗?淘宝直播技巧是什么?
2019-04-30
弘辽科技:淘宝开店后不卖东西可以吗?
2019-04-30
弘辽科技:下沉市场的数字化渗透与割裂
2019-04-30
弘辽科技:拼多多什么时候有活动?参加活动有哪些好处?
2019-04-30
弘辽科技:扶持100个新品牌销量过亿投资人在抖音看到哪些机会?
2019-04-30