回文最少分割数

来源:互联网 发布:淘宝禁售商品奶粉 编辑:程序博客网 时间:2024/05/29 16:56
/** * Created by lxw, liwei4939@126.com on 2017/11/1. * 回文最少分割数 * 给定字符串str,返回把str全部切成回文子串的最小分割数 */public class palindMinCut {    public int minCut(String str){        if(str == null || str.equals("")){            return 0;        }        char[] chas = str.toCharArray();        int len = chas.length;        int[] dp = new int[len + 1];        dp[len] = -1;        boolean[][] p = new boolean[len][len];        for (int i= len-1; i>=0; i--){            dp[i] = Integer.MAX_VALUE;            for (int j = i; j<len; j++){                if(chas[i] == chas[j] && (j-i < 2 || p[i+1][j-1])){                    p[i][j] = true;                    dp[i] = Math.min(dp[i], dp[j+1] + 1);                }            }        }        return dp[0];    }    public static void main(String[] args){        palindMinCut tmp = new palindMinCut();        String str1 = "ABA";        System.out.println(tmp.minCut(str1));        String str2 = "ACDCDCDAD";        System.out.println(tmp.minCut(str2));    }}