分割回文串 II
来源:互联网 发布:客管家软件好用吗 编辑:程序博客网 时间:2024/04/30 19:56
给定一个字符串s,将s分割成一些子串,使每个子串都是回文。
返回s符合要求的的最少分割次数。
样例
比如,给出字符串s = "aab",
返回 1, 因为进行一次分割可以将字符串s分割成["aa","b"]这样两个回文子串
点题:一定要小心又小心,不要在最简单的地方翻船!!!!! i++, j--
class Solution {public: /** * @param s a string * @return an integer */ int minCut(string s) { // write your code here if (s.size() == 0) { return 0; } vector<int> dp(s.size(), 0); for (int i = 1; i < s.size(); i++) { if (IsTarget(s.substr(0, i + 1))) { dp[i] = 0; continue; } dp[i] = i; for (int j = i; j > 0; j--) { if (IsTarget(s.substr(j, i - j + 1))) { dp[i] = min(dp[i], dp[j - 1] + 1); } } } return dp[s.size() - 1]; } bool IsTarget(const string& s) { if (s.size() == 1) { return true; } int i = 0; int j = s.size() - 1; while (i < j) { if (s[i++] != s[j--]) { return false; } } return true; }};
解法2:减少判断是否是回文的运算量
class Solution {public: int minCut(string s) { if (s.size() == 0) { return 0; } vector<int> dp(s.size(), 0); vector<vector<bool>> status(s.size(), vector<bool>(s.size(), false)); for (int i = 0; i < s.size(); i++) { status[i][i] = true; if (i + 1 < s.size() && s[i] == s[i + 1]) { status[i][i + 1] = true; } } for (int i = 1; i < s.size(); i++) { if (i + 1 > 2) { status[0][i] = status[1][i - 1] && s[0] == s[i]; } if (status[0][i]) { continue; } dp[i] = i; for (int j = i; j > 0; j--) { if (i - j + 1 > 2) { status[j][i] = status[j + 1][i - 1] && s[j] == s[i]; } if (status[j][i]) { dp[i] = min(dp[i], dp[j - 1] + 1); } } } return dp[s.size() - 1]; }};
阅读全文
0 0
- 分割回文串II
- 分割回文串 II
- LintCode-分割回文串 II
- 题目:分割回文串 II
- LintCode: 分割回文串 II
- 分割回文串 II-LintCode
- lintode(108)分割回文串 II
- 最小回文分割数 Palindrome Partitioning II
- 108.Palindrome Partitioning II-分割回文串 II(中等题)
- 题目:分割回文串
- LintCode- 分割回文串
- 分割回文串
- LintCode:分割回文串
- 分割回文串
- 分割回文串
- 分割回文串
- 分割回文串I
- 分割回文串-LintCode
- finereport 破解版
- 云的安全 VS 云内的安全
- cad 2010 64位
- FineReporte9.0完美破解原理浅谈 微信 移动开发注册破解
- Struts的常用标签<%@ taglib prefix="s" uri="/struts-tags"%>
- 分割回文串 II
- 最新Android平台架构
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- 这是什么问题
- 主席树/可持久化线段树简介(洛谷P3834/P3919)
- C++常用库函数
- linux 中安装PDF阅读器FoxitReader
- finereport破解版有吗
- CodeForces 66 D.Petya and His Friends(构造+数论+高精度)