LeetCode 132 Palindrome Partitioning II (动态规划)
2016-10-23 11:59
651 查看
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 =
Return
题目链接:https://leetcode.com/problems/palindrome-partitioning-ii/
题目分析:设dp[i]为从i到len最少要切的次数,注意距离小于2的情况,为了方便 将dp[len]初始化为-1,因为该方法是找到一个回文就切一下,所以整个串是回文的情况实际上是不用切的
public class Solution {
public int minCut(String s) {
int len = s.length();
if (len < 2) {
return 0;
}
int[] dp = new int[len + 1];
boolean[][] isPalindrome = new boolean[len + 1][len + 1];
for (int i = 0; i < len; i ++) {
dp[i] = len - i - 1;
isPalindrome[i][i] = true;
}
dp[len] = -1;
for (int i = len - 1; i >= 0; i --) {
for (int j = i; j < len; j ++) {
if (s.charAt(i) == s.charAt(j) && (j - i < 2 || isPalindrome[i + 1][j - 1])) {
dp[i] = Math.min(dp[i], dp[j + 1] + 1);
isPalindrome[i][j] = true;
}
}
}
return dp[0];
}
}
Return the minimum cuts needed for a palindrome partitioning of
s.
For example, given s =
"aab",
Return
1since the palindrome partitioning
["aa","b"]could be produced using 1 cut.
题目链接:https://leetcode.com/problems/palindrome-partitioning-ii/
题目分析:设dp[i]为从i到len最少要切的次数,注意距离小于2的情况,为了方便 将dp[len]初始化为-1,因为该方法是找到一个回文就切一下,所以整个串是回文的情况实际上是不用切的
public class Solution {
public int minCut(String s) {
int len = s.length();
if (len < 2) {
return 0;
}
int[] dp = new int[len + 1];
boolean[][] isPalindrome = new boolean[len + 1][len + 1];
for (int i = 0; i < len; i ++) {
dp[i] = len - i - 1;
isPalindrome[i][i] = true;
}
dp[len] = -1;
for (int i = len - 1; i >= 0; i --) {
for (int j = i; j < len; j ++) {
if (s.charAt(i) == s.charAt(j) && (j - i < 2 || isPalindrome[i + 1][j - 1])) {
dp[i] = Math.min(dp[i], dp[j + 1] + 1);
isPalindrome[i][j] = true;
}
}
}
return dp[0];
}
}
相关文章推荐
- Leetcode 132. Palindrome Partitioning II
- [LeetCode 132] - 回文分割II(Palindrome Partitioning II)
- [leetcode]132. Palindrome Partitioning II(Java)
- leetcode 132 —— Palindrome Partitioning II
- Leetcode(132) Palindrome Partitioning II
- 【LeetCode】132.Palindrome Partitioning II
- 每日AC-LeetCode-palindrome-partitioning-ii --动态规划
- LeetCode 132 Palindrome Partitioning II
- leetcode[132]Palindrome Partitioning II
- Java for LeetCode 132 Palindrome Partitioning II
- [leetcode 132] Palindrome Partitioning II
- Leetcode 132. Palindrome Partitioning II
- Leetcode 132. Palindrome Partitioning II (Hard) (cpp)
- 132. Palindrome Partitioning II (动态规划)
- LeetCode132 Palindrome Partitioning II&I
- [Leetcode] 132. Palindrome Partitioning II
- 132 Palindrome Partitioning II [Leetcode]
- leetcode || 132、Palindrome Partitioning II
- leetcode132 Palindrome Partitioning II
- [LeetCode]132 Palindrome Partitioning II