您的位置:首页 > 其它

LeetCode------------palindrome-partitioningII(回文2)

2016-10-05 16:09 393 查看


题目描述

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",

Return1since the palindrome partitioning["aa","b"]could be produced using 1 cut.

class Solution {

public:

    int minCut(string s) {

        if (s.size()==0 || s.size()==1)

            return 0;

        vector<int> dp(s.size(), 0);

        for (int i=1; i<s.size(); i++)//dp[i]初始化

            dp[i] = isPalind(s.substr(0, i+1)) ? 0:i;

        for (int i=1; i<s.size(); i++){

            for (int j=0; j<=i; j++){

                if (isPalind(s.substr(j+1, i-j)))

                    dp[i] = min(dp[i], dp[j] + 1);

                else 

                    dp[i] = min(dp[i], dp[j] + i-j);

            }

        }

        return dp[s.size()-1];

    }

    int isPalind(string s){

        if (s.size()==0 ||s.size()==1)

            return 1;

        int i=0;

        int j=s.size()-1;

        while(i<=j){

            if (s[i] != s[j])

                return 0;

            else{

                ++i;

                j--;

            }

            

        }

        return 1;

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode dp