Palindrome Partitioning II

来源:互联网 发布:怎么把对象传进js函数 编辑:程序博客网 时间:2024/05/19 14:00

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.

dfs超时

public class Solution {    public int minCut(String s) {        if(s==null || s.length()<=1) return 0;        if(isPalindrome(s,0,s.length()-1)) return 0;        return cutTimes(s,0,0);    }    //dfs    public int cutTimes(String s,int start,int times){       if(start==s.length()){           return times-1;       }       if(isPalindrome(s,start,s.length()-1)) return times;       int res=s.length()-1;       for(int i=start;i<s.length();i++){           if( isPalindrome(s,start,i)){               if(isPalindrome(s,i,s.length()-1)){                   res=Math.min(res,times+1);                   break;               }                else res=Math.min(res,cutTimes(s,i+1,times+1));           }       }       return res;    }    public boolean isPalindrome(String s,int i,int j){          while(i<=j){              if(s.charAt(i)==s.charAt(j)){                  i++;                  j--;              }              else return false;          }          return true;      }  }

dp


0 0
原创粉丝点击