132. Palindrome Partitioning II (动态规划)
2017-05-25 19:09
441 查看
刷题地址
https://leetcode.com/problems/palindrome-partitioning-ii/#/descriptionAC
思路详解http://blog.csdn.net/jin_kwok/article/details/51423222
超时代码:
class Solution { public: bool isPalindrome(string s, int sta, int en) { int i = sta; int j = en; while(i < j) { if(s[i] != s[j]) return false; i ++; j --; } return true; } int minCut(string s) { int len = s.size(); vector<vector<int>> dp(len,vector<int>(len,0)); for(int i=0;i<len;i++) { dp[i][i] = 1; for(int j = i + 1 ; j < len;j++) { if(isPalindrome(s,i,j)) dp[i][j] = 1; } } vector<int> cnt(len + 1, 0); cnt[len] = -1; cnt[len-1] = 0; for(int i=len-2; i>=0; i--) { cnt[i] = 1 + cnt[i+1]; for(int j = i+1;j < len;j++) { if(dp[i][j] == 1) { cnt[i] = min(cnt[i], 1 + cnt[j+1]); } } } return cnt[0]; } };
2.ac代码
class Solution { public: int minCut(string s) { int len = s.size(); vector<vector<int>> dp(len,vector<int>(len,0)); vector<int> cnt(len + 1, 0); cnt[len] = -1; for(int i=len-1; i>=0; i--) { cnt[i] = 1 + cnt[i+1]; for(int j = i;j < len;j++) { // s[i-j]的回文判断 if(s[i] == s[j] && (j-i<=1 ||dp[i+1][j-1] == 1) ) { dp[i][j] = 1; cnt[i] = min(cnt[i], 1 + cnt[j+1]); } } } return cnt[0]; } };
相关文章推荐
- LeetCode 132 Palindrome Partitioning II (动态规划)
- Leetcode(132) Palindrome Partitioning II
- LeetCode132:Palindrome Partitioning II
- 132. Palindrome Partitioning II
- 「动态规划」Palindrome Partitioning II
- Java for LeetCode 132 Palindrome Partitioning II
- LeetCode 132 Palindrome Partitioning II
- [leedcode 132] Palindrome Partitioning II
- 132. Palindrome Partitioning II
- [leetcode 132] Palindrome Partitioning II
- [LeetCode]题解(python):132-Palindrome Partitioning II
- 132. Palindrome Partitioning II
- 132 Palindrome Partitioning II [Leetcode]
- LeetCode132 Palindrome Partitioning II&I
- LeetCode: Palindrome Partitioning II [132]
- [leetcode]132. Palindrome Partitioning II(Java)
- 132. Palindrome Partitioning II
- Leetcode 132. Palindrome Partitioning II
- 132. Palindrome Partitioning II
- 132. Palindrome Partitioning II