zoukankan      html  css  js  c++  java
  • 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 of s.

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

    首先通过O(n^2)初始化所有起点终点对是否是回文

    判断(i,j)是否是回文可以通过(i+1,j-1)是否是回文来加速

    之后通过动归完成,动归复杂度为O(n^2)

    class Solution {
    public:
        int minCut(string s) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            if(s=="")return 0;
            vector<vector<int> > ISP;
            ISP.resize(s.length());
            for(int i=0;i<s.length();i++){
                ISP[i].resize(s.length());
            }
            ISP[0][0]=true;
            for(int i=1;i<s.length();i++){
                ISP[i][i]=true;
                if(s[i-1]==s[i]){
                    ISP[i-1][i]=true;
                }
                else{
                    ISP[i-1][i]=false;
                }
            }
            for(int j=2;j<s.length();j++){
                for(int i=0;i<s.length()-j;i++){
                    if(s[i]==s[i+j]&&ISP[i+1][i+j-1]){
                        ISP[i][i+j]=true;
                    }
                    else{
                        ISP[i][i+j]=false;
                    }
                }
            }
            vector<int> cuts;
            cuts.resize(s.length());
            cuts[0]=0;
            for(int i=1;i<s.length();i++){
                cuts[i]=cuts[i-1]+1;
                if(ISP[0][i])cuts[i]=0;
                else{
                    for(int j=1;j<=i;j++){
                        if(ISP[i-j+1][i]&&cuts[i-j]+1<cuts[i]){
                            cuts[i]=cuts[i-j]+1;
                        }
                    }
                }
            }
            return cuts[s.length()-1];
        }
    };
    O(n^2)
  • 相关阅读:
    行列式运算法则
    神经元的数学模型
    Neural Network and Artificial Neural Network
    常见的23种设计模式
    Java 基本数据类型 及 == 与 equals 方法的区别
    MySQL经典编程问题
    MyEclipse配置tomcat报错
    MySQL 日期类型函数及使用
    MySQL dump文件导入
    MySQL 的两个特殊属性 unsigned与 zerofill
  • 原文地址:https://www.cnblogs.com/superzrx/p/3356417.html
Copyright © 2011-2022 走看看