博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Palindrome Partitioning II
阅读量:5757 次
发布时间:2019-06-18

本文共 1188 字,大约阅读时间需要 3 分钟。

Given a string s, partition s such that every substring of the partition is a palindrome.

Return the minimum cuts needed for a palindrome partitioning of s.

For example, given s = "aab",

Return 1 since the palindrome partitioning ["aa","b"] could be produced using 1 cut.

思路:

DP。

用r[i]表示从0到i的的最小cut数目,则对于i+1,r[i+1] = min(r[j]+1)(0<=j<i+1 && s[j...i]是回文的)。

同时在判断是否为回文这部分,再用DP,用isPalindrome[i][j]表示从i到j的字符串是否是回文的。

代码:

1     int minCut(string s) { 2         // Start typing your C/C++ solution below 3         // DO NOT write int main() function 4         int n = s.size(); 5         vector
res(n+1); 6 for(int i = 0 ; i< n + 1 ; ++i){ 7 res[i] = i - 1; 8 } 9 vector
> p(n, vector
(n, false));10 for(int i = 0; i< n; ++i){11 for(int j = 0; j <= i ; ++j){12 if(s[i] == s[j] && (i - j < 2 || p[j + 1][i - 1])){13 p[j][i] = true;14 res[i + 1] = min(res[i + 1], res[j] + 1);15 }16 }17 }18 return res[n];19 }

 

 

转载于:https://www.cnblogs.com/waruzhi/p/3454842.html

你可能感兴趣的文章
全排列
查看>>
linux下配置使用sendEmail发送邮件
查看>>
从Exchange 通往Office 365系列(十八)通过csv文件批量创建用户
查看>>
我的友情链接
查看>>
H5中需要掌握的 ANIMATION 动画效果
查看>>
从URL中移除JSESSIONID
查看>>
redis学习笔记之持久化
查看>>
[修正]IOS中使用SoundTouch库实现变声
查看>>
阿里毕玄:技术人应如何选择职业发展路线?
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
写给兔小白的js教程(1)
查看>>
浅谈市场营销
查看>>
使用kibana制作ip请求排行榜
查看>>
c primer plus(第五版)读书笔计 第八章(4)
查看>>
专家称设置复杂密码 可以解决网络密码安全隐患
查看>>
linux定时crontab备份数据库
查看>>
python的四种数据结构浅析
查看>>
后门工具dbd
查看>>
CodeCombat-命令下属
查看>>