Leetcode--Palindrome Partitioning II

来源:互联网 发布:linux cpu绑核 编辑:程序博客网 时间:2024/05/29 16:21

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.

Have you been asked this question in an interview?

思路:按照Palindrome Partitioning I的思路


class Solution {public:    vector<int> vec;    bool flag=true;    bool isvalid(string s)    {        if(s.size()<=1)            return true;        int l=0;        int r=s.size()-1;        while(l<r)        {            if(s[l]!=s[r])                return false;            else            {                l++;                r--;            }        }                return true;    }    void traceback(string s,bool **arr,int i,int number)    {if(!flag)return ;        if(i<0){vec.push_back(number-1) ;flag=false;}        else{            for(int j=0;j<=i;j++)            {                if(arr[j][i]){int newnumber=number+1;                    traceback(s,arr,j-1,newnumber);}            }        }    }    int minCut(string s) {        if(s.size()<=1)            return 0;        bool **arr=new bool*[s.size()];        for(unsigned int i=0;i<s.size();i++){            arr[i]=new bool[s.size()];            for(int j=0;j<s.size();j++)                arr[i][j]=false;        }        for(unsigned int i=0;i<s.size();i++)            for(unsigned int j=0;j<s.size();j++)            {                arr[i][j]=isvalid(s.substr(i,j-i+1));            }        int nu=0;        traceback(s,arr,s.size()-1,nu);        return vec[0];    }};

Submission Result: Time Limit Exceeded


0 0
原创粉丝点击