解题步骤:
参考代码:
- class Solution {
- public:
- int minCut(string s) {
- int n=s.size();
-
- //保存s的所有子串是否是回文串的信息的哈希表
- vector
bool>> hash(n,vector<bool>(n)); - for(int i=n-1;i>=0;i--)
- {
- for(int j=i;j
- {
- if(s[i]==s[j])
- {
- hash[i][j]=i+1
1][j-1]:true; - }
- }
- }
-
- vector<int> dp(n,INT_MAX);
- for(int i=0;i
- {
- //如果[0,i]子串本来就是回文串,那么就无需分割,即dp[i]=0
- if(hash[0][i]==true)
- {
- dp[i]=0;
- }
- else
- {
- //[0,i]子串不是回文串就要找到一个j,令[j,i]子串是回文串,并且
- //把[0,j-1]分割成回文串用最少的分割次数
- for(int j=1;j<=i;j++)
- {
- if(hash[j][i]==true)
- {
- dp[i]=min(dp[i],dp[j-1]+1);
- }
- }
- }
- }
- return dp[n-1];
-
- }
- };
你学会了吗???
-
相关阅读:
前端菜鸟一般不知道css可以这样命名
开发chromium你要知道的几个地址
诊断Android系统原生代码Native崩溃问题
消息中间件 - RocketMQ基础
MATLAB中的稀疏矩阵和密集矩阵
python使用matplotlib可视化线图(line plot)、将可视化图像的图例(legend)放置在图像外部、左侧区域
HTB-Explore
《深入浅出Spring》SpringAOP 详解 ProxyFactoryBean
Linux环境下使用Docker搭建Jenkins容器
前端基础知识
-
原文地址:https://blog.csdn.net/weixin_70056514/article/details/133632679