leetcode【困难】132、分割回文串

leetcode【困难】132、分割回文串
思路:动态规划
131、分割回文串 的回溯思路会超时
131 是要记录每一种分割情况,本题只记录最小分割次数,动态规划即可。dp2[i]记录[0,i]里的最小次数

class Solution {
    public int minCut(String s) {
        int len=s.length();
        boolean[][] dp=new boolean[len][len];
        isVaild(dp,s);

        int[]dp2=new int[len];
        for(int r=1;r<len;r++){
            if(dp[0][r]==false){
                dp2[r]=dp2[r-1]+1;//最坏情况,当前字符单独为一段
                for(int l=0;l<r;l++){
                    if(dp[l][r]) dp2[r]=Math.min(dp2[r],dp2[l-1]+1);
                }
            }
        }
        return dp2[len-1];
    }

    public void isVaild(boolean[][]dp,String s){
        int len=s.length();
        for(int i=0;i<len;i++){
            for(int j=0;j<=i;j++){
                if(s.charAt(i)==s.charAt(j)){
                    if(i-j<3) dp[j][i]=true;
                    else dp[j][i]=dp[j+1][i-1];
                }
            }
        }

    }
}
上一篇:数论 期望 lgCF235B题解


下一篇:【剑指 Offer II】 090. 环形房屋偷盗