132. Palindrome Partitioning II
class Solution { public int minCut(String s) { int[] dp=new int[s.length()+1]; for(int i=0;i<=s.length();i++) dp[i]=i-1; for(int i=1;i<s.length();i++) { for(int len=0;i-len>=0&&i+len<s.length()&&s.charAt(i-len)==s.charAt(i+len);len++) dp[i+1+len]=Math.min(dp[i+1+len],dp[i-len]+1); for(int len=0;i-1-len>=0&&i+len<s.length()&&s.charAt(i-1-len)==s.charAt(i+len);len++) dp[i+1+len]=Math.min(dp[i+1+len],dp[i-1-len]+1); } return dp[s.length()]; } }