Lintcode108 Palindrome Partitioning || solution 题解

【题目描述】

Given a strings, cutsinto some substrings such that every substring is a palindrome.

Return the minimum cuts needed for a palindrome partitioning ofs.

给定一个字符串s,将s分割成一些子串,使每个子串都是回文。

返回s符合要求的的最少分割次数。

【题目链接】

www.lintcode.com/en/problem/palindrome-partitioning-ii/

【题目解析】

切割数部分使用动态规划,优化的空间不大,仔细想想可以发现在判断字符串是否为回文的部分存在大量重叠计算,故可引入动态规划进行优化,时间复杂度可优化至到平方级别。

定义状态PaMat[i][j] 为区间[i,j]是否为回文的标志, 对应此状态的子问题可从回文的定义出发,如果字符串首尾字符相同且在去掉字符串首尾字符后字符串仍为回文,则原字符串为回文,相应的状态转移方程PaMat[i][j] = s[i] == s[j] && PaMat[i+1][j-1], 由于状态转移方程中依赖比i大的结果,故实现中需要从索引大的往索引小的递推,另外还需要考虑一些边界条件和初始化方式。

【参考答案】

www.jiuzhang.com/solutions/palindrome-partitioning-ii/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 132. Palindrome Partitioning II 这道题考的是怎么用dp来解决dfs的问题如果仅使用...
    Isabella10阅读 5,946评论 0 0
  • 分治方法 将问题划分成互不相交的子问题 递归地求解子问题 将子问题的解组合起来 动态规划(两个要素:最优子结构、子...
    superlj666阅读 3,490评论 0 0
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 11,542评论 1 42
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 18,181评论 2 36

友情链接更多精彩内容