Leetcode131.分割回文串-Palindrome Patitioning-Python-回溯法

解题思路:

1.切割回文串,可以用解决找组合问题的思路解决,而解决组合问题,可以用回溯法,故本题选择回溯法。

2.理解两个事情:1.递归函数里的for循环是横向遍历给定字符串s的每一个字母。2.针对s的每一个字母,比如在切割了第一个字母之后,还有很多种切割方式,这是由不断的调用递归函数来实现的。

3.判断回文串。用双指针法即可。当然此题也可以用动态规划法,但是为了降低难度,我先不采用这个方法,知识点太多吃不消呀。

注意:

1.判断是回文串之后,如何确定s的索引来将回文串添加至path。因为在判断回文串时,传入的函数参数是startIndex,i。这是确认是否是回文串的索引下标,如果是回文串的话,其实索引startIndex不变,只需要将终止索引+1, 即i+1。例如'aab' startIndex==1, i==2,那么待判断的回文串就是ab.假设ab是回文串,那么索引 startIndex, i+1 就代表着aab的ab。So, do you understand?

复制代码
            if self.isPalinDrome(s, startIndex, i):
                self.path.append(s[startIndex:i+1])
            else:
                continue

代码:

复制代码
class Solution(object):
    result = []
    path = []
    
    def traceBacking(self, s, startIndex):
        if startIndex >= len(s):
            self.result.append(self.path[:])
            return
        for i in range(startIndex, len(s)):

            if self.isPalinDrome(s, startIndex, i):
                self.path.append(s[startIndex:i+1])
            else:
                continue
            
            self.traceBacking(s, i+1)
            self.path.pop()
        
    def isPalinDrome(self,s,startIndex, end):
        i = startIndex
        j = end
        while i<j:
            if s[i] != s[j]:
                return False
            i +=1
            j -=1
        return True

    def partition(self, s):
        self.result = []
        self.traceBacking(s, 0)
        return self.result
相关推荐
金銀銅鐵22 分钟前
[Python] 用 turtle 来绘制瑞典国旗
python
Albert Edison23 分钟前
【GUI 自动化测试】Pywinauto 常见操作
自动化测试·python·pywinauto
海兰24 分钟前
【高速缓存】RedisVL为文本生成嵌入向量实践指南
人工智能·python·机器学习
2601_9557600732 分钟前
如何用 Claude Opus 5 API 批量扩展长尾关键词和文章选题
前端·python·搜索引擎
KaMeidebaby37 分钟前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
艾斯特_1 小时前
从模型调用到可用聊天应用:会话状态与消息协议
python·ai·aigc
alphaTao1 小时前
LeetCode 每日一题 2026/7/20-2026/7/26
算法·leetcode
Marst Code1 小时前
Python 3.9 已停止维护!从 3.9 到 3.14 全版本深度对比,生产环境该选哪个?
开发语言·python
llwszx1 小时前
【Java/Go后端手撸原生Agent(第九篇):Plan-and-Execute规划模式——从“走一步看一步“到“先谋后动“】
java·python·golang·agent开发·plan模式·规划执行模式
lxw18449125141 小时前
Python uv 完整使用教程
python·conda·pip·uv