zoukankan      html  css  js  c++  java
  • 分割回文串II

    给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

    返回符合要求的最少分割次数。

    示例:

    输入: "aab"
    输出: 1
    解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。

    class Solution {
    public:
        int ispalindrome(string s,int left,int right){
            while(left<right){
                if(s[left]==s[right]){
                    left++;
                    right--;
                }
                else{
                    break;
                }
            }
            if(left<right){
                return 0;
            }
            return 1;
        }
    
        int dfs(string s,int left,int right,vector<vector<int>>&pa,vector<vector<int>>&dp){
            if(dp[left][right]!=-1)
                return dp[left][right];
            int res = right-left;
            if(pa[left][right]==1||ispalindrome(s,left,right)==1){
                pa[left][right]=1;
                dp[left][right]=0;
                return 0;
            }
            else{
                pa[left][right]=0;
            }
            if(left==right)
            {
                dp[left][right]=1;
                return 1;
            }
    
            for(int i=left;i<right;i++){
                res = min(res,dfs(s,left,i,pa,dp)+dfs(s,i+1,right,pa,dp)+1);
            }
            dp[left][right]=res;
            return res;
        }
        int minCut(string s) {
            vector<vector<int>>pa(s.size(),vector<int>(s.size(),-1));
            vector<vector<int>>dp(s.size(),vector<int>(s.size(),-1));
            return dfs(s,0,s.size()-1,pa,dp);
        }
    };
  • 相关阅读:
    ASP.NET WEB API构建基于REST风格
    .net平台下深拷贝和浅拷贝
    Visual Studio 必备神器
    sql注入
    proxy
    职场人生
    JSch
    何时用继承,何时用组合
    视频码率,帧率和分辨率的联系与差别
    超过响应缓冲区限制
  • 原文地址:https://www.cnblogs.com/qiuhaifeng/p/11774375.html
Copyright © 2011-2022 走看看