当前位置: 首页 > news >正文

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[:])returnfor i in range(startIndex, len(s)):if self.isPalinDrome(s, startIndex, i):self.path.append(s[startIndex:i+1])else:continueself.traceBacking(s, i+1)self.path.pop()def isPalinDrome(self,s,startIndex, end):i = startIndexj = endwhile i<j:if s[i] != s[j]:return Falsei +=1j -=1return Truedef partition(self, s):self.result = []self.traceBacking(s, 0)return self.result

http://www.lryc.cn/news/288224.html

相关文章:

  • Java面试——基础篇
  • C++——结构体
  • C++技术要点总结, 面试必备, 收藏起来慢慢看
  • VR数字展厅,平面静态跨越到3D立体化时代
  • Linux中LVM实验
  • 外包干了一个月,技术退步明显。。。。。
  • gitlab.rb主要配置
  • 网络协议基础
  • Mac使用adb调试安卓手机
  • Web 开发 1: Flask 框架介绍和使用
  • Centos7.6之禅道开源版17.6.1安装记录
  • 有趣的代码(简单)
  • Java和Redis实现一个简单的热搜功能
  • 超越传统,想修哪里就修哪里,SUPIR如何通过文本提示实现智能图像修复
  • 《如何画好架构图》学习笔记
  • redis整合
  • 开循环低温样品架节约液氦操作技巧
  • 年薪30W+,待遇翻倍,我的经历值得每个测试人借鉴
  • DEB方式安装elastic search7以及使用
  • [Tomcat] [最全] 目录和文件详解
  • 微信小程序元素/文字在横向和纵向实现居中对齐、两端对齐、左右对齐、上下对齐
  • 兼容树莓派扩展模块,专注工业产品开发的瑞米派强势来袭
  • 云原生 - 微信小程序 COS 对象存储图片缓存强制更新解决方案
  • 设计公司设计ppt的优势—南京梵构广告
  • gitlab设置/修改克隆clone地址端口
  • Jellyfin影音服务本地部署并结合内网穿透实现公网访问本地资源
  • 笨蛋学设计模式行为型模式-责任链模式【18】
  • 【.NET Core】深入理解任务并行库 (TPL)
  • win10安装redis并配置加自启动(采用官方推荐unix子系统)
  • 【大数据面试题】HBase面试题附答案