首页 > 其他 > 详细

leetcode--Palindrome Partitioning II

时间:2014-02-11 08:48:27      阅读:287      评论:0      收藏:0      [点我收藏+]

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.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class Solution {
    public int minCut(String s) {
      int cuts = 0;
        int len = s.length();
        if(len > 1){
            boolean[][] isPalindrome = new boolean[len][len];
            //s.substring(i, i + 1) is palindrome (substring with length 1)
            for(int i = 0; i < len; ++i)
                isPalindrome[i][i] = true;
            //substring with length > 1
            for(int i = len - 2; i >= 0; --i){
                for(int j = len - 1; j > i; --j){
                    if(j - i == 1){
                        isPalindrome[i][j] = (s.charAt(i) == s.charAt(j));
                        isPalindrome[j][i] = isPalindrome[i][j];
                    }
                    else{
                        isPalindrome[i][j] = (s.charAt(i) == s.charAt(j) && isPalindrome[i + 1][j - 1]) ? true : false;
                        isPalindrome[j][i] = isPalindrome[i][j];
                    }
                }
            }
             
            int[] minCutting = new int[len];
            for(int i = len - 1; i >= 0; --i){
                if(isPalindrome[i][len - 1])
                    minCutting[i] = 0;
                else{
                    int min = len + 1;
                    for(int j = i + 1 ; j < len; ++j){
                        if(isPalindrome[i][j - 1])
                            min = (min < 1 + minCutting[j])? min : 1 + minCutting[j];
                    }
                    minCutting[i] = min;
                }
            }
            cuts = minCutting[0];
        }
        return cuts;
    }
}

  

leetcode--Palindrome Partitioning II

原文:http://www.cnblogs.com/averillzheng/p/3543742.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!