首页 > 代码库 > [leetcode]Palindrome Partitioning II

[leetcode]Palindrome Partitioning II

问题描述:

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 ofs.

For example, given s = "aab",
Return 1 since the palindrome partitioning ["aa","b"] could be produced using 1 cut.


代码:

    int minCut(string s) {  //C++
        int len = s.size();
        if(len == 0)
            return  0;
        
        vector<int> nodes(len+1);
        for(int i = 0; i<=len; i++)
            nodes[i]=i-1;
            
        for(int i = 0; i<len; i++){
            for(int j = 0; i+j<len&&i-j>=0&&s[i+j]==s[i-j] ;j++ )
                nodes[i+j+1] = min(nodes[i+j+1],nodes[i-j]+1);
            for(int j = 0; i+j-1<len&&i-j>=0&&s[i+j-1]==s[i-j] ;j++ )
                nodes[i+j] = min(nodes[i+j],nodes[i-j]+1);
        }
        return nodes[len];
    }


[leetcode]Palindrome Partitioning II