博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Palindrome Partitioning II
阅读量:4150 次
发布时间:2019-05-25

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

class Solution {public:	int minCut(string s) {		// Start typing your C/C++ solution below		// DO NOT write int main() function		int len = s.size();		vector
dp(len+1);//dp[i]: minimum cut between [i,len-1] for(int i = 0; i <= len; ++i) dp[i] = len-i; vector
> p;//p[i][j]: sub string [i,j] palindrome? p.resize(len); for(int i = 0; i < len; ++i) p[i].assign(len, false); for (int i = len-1; i >= 0; --i) { for (int j = i; j < len; ++j) { if(s[i] == s[j] && (j-i < 2 || p[i+1][j-1])) { p[i][j] = true; dp[i] = min(dp[i], 1+dp[j+1]); } } } return dp[0]-1; }};

second time

class Solution {public:    int minCut(string s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int n = s.size();        if(n == 0) return 0;        vector
f(n+1, INT_MAX); f[0] = -1; vector
> p(n, vector
(n, false)); for(int i = 0; i < n; ++i) p[i][i] = true; for(int i = 1; i <= n; ++i) { for(int k = 0; k < i; ++k) { if(s[k] == s[i-1]) p[k][i-1] = (i-2 <= k+1) || p[k+1][i-2]; if(p[k][i-1]) f[i] = min(f[i], f[k]+1); } } return f[n]; }};

转载地址:http://dmxti.baihongyu.com/

你可能感兴趣的文章
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>