132. Palindrome Partitioning II
2017-03-12 01:11
309 查看
问题描述
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.
Subscribe to see which companies asked this question.
解决思路
动态规划。 但这里需要两个状态变量,一个是 isp[i][j]判断s[i…j]是否回文串,cut[i]表示s[0…i]的最小切割次数。
显然isp[i][i] = true,若i+1 < j-1 && s[i]==s[j],isp[i][j] = isp[i+1][j-1]
cut[i] 则可以在isp[k][i] == true的情况下,cut[i]为cut[k-1] (k =0,1,… i)加1的最小值。
代码
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.
Subscribe to see which companies asked this question.
解决思路
动态规划。 但这里需要两个状态变量,一个是 isp[i][j]判断s[i…j]是否回文串,cut[i]表示s[0…i]的最小切割次数。
显然isp[i][i] = true,若i+1 < j-1 && s[i]==s[j],isp[i][j] = isp[i+1][j-1]
cut[i] 则可以在isp[k][i] == true的情况下,cut[i]为cut[k-1] (k =0,1,… i)加1的最小值。
代码
class Solution { public: int minCut(string s) { if (s.length() == 0) return 0; int n = s.length(); vector<vector<bool>> isp(n,vector<bool>(n,false)); vector<int> cut(n,0); for (int i = 0; i < n; ++i) { int m = i; for (int j = 0; j <= i; ++j) { if (s[i] == s[j] && (j+1 > i-1 || isp[j+1][i-1])) { isp[j][i] = true; m = j==0 ? 0 : min(m, cut[j-1]+1); } } cut[i] = m; } return cut[n-1]; } };
相关文章推荐
- leetcode[132]Palindrome Partitioning II
- 132. Palindrome Partitioning II Leetcode Python
- LeetCode132 Palindrome Partitioning II&I
- 132. Palindrome Partitioning II
- Leetcode 132. Palindrome Partitioning II (Hard) (cpp)
- 132. Palindrome Partitioning II
- [leedcode 132] Palindrome Partitioning II
- LeetCode 132 Palindrome Partitioning II
- [leetcode 132] Palindrome Partitioning II
- leetcode132 Palindrome Partitioning II
- LeetCode: Palindrome Partitioning II [132]
- Java for LeetCode 132 Palindrome Partitioning II
- 132. Palindrome Partitioning II
- LeetCode #132: Palindrome Partitioning II
- LeetCode 132 Palindrome Partitioning II
- LeetCode 132. Palindrome Partitioning II
- 132. Palindrome Partitioning II
- LeetCode 132 Palindrome Partitioning II--In C++
- [LeetCode]132 Palindrome Partitioning II
- 132. Palindrome Partitioning II