栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode-132-字符串-最少回文分割

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode-132-字符串-最少回文分割

从小到大的动态规划

//参考题目:https://leetcode-cn.com/problems/M99OJA/
class Solution {
public:
    int minCut(string s) {
        //方法一:借鉴 剑指 Offer II 086. 分割回文子字符串,https://leetcode-cn.com/problems/M99OJA/ 超时
        // vector path;
        // int min = INT_MAX;
        // dfs(s,0,path,min);
        // return min-1;

        //方法二,https://leetcode-cn.com/problems/palindrome-partitioning-ii/solution/fen-ge-hui-wen-chuan-ii-by-leetcode-solu-norx/
        // https://leetcode-cn.com/problems/palindrome-partitioning-ii/solution/wei-rao-li-lun-yu-chu-li-dong-tai-gui-hu-akpu/
        
        int n = s.size();
        //使用了备忘录记录回文字符串的信息,防止重复计算0
        vector> Palindrometable(n, vector(n, true));
        
        //Palindrometable[i][j]表示 s[i..j] 是否为回文串
        for (int i = n - 1; i >= 0; --i) 
        {
            for (int j = i + 1; j < n; ++j) 
            {   //从两边到中间来判断是否是回文
                Palindrometable[i][j] = (s[i] == s[j]) && Palindrometable[i+1][j-1];
            }
        }

        vector dp(n, INT_MAX);
        for (int i = 0; i < n; ++i) 
        {
            //字符串s[0][i]本来就是回文字符串,不需要分割,故 dp[i] = 0
            if (Palindrometable[0][i]) 
            {
                dp[i] = 0;
            }
            else 
            {   // 0<=j& path, int& min)
    {
        if (begin == str.size())
        {
            min = min > path.size() ? path.size() : min;
            return;
        }

        for (int end=begin;end end)
        {
            return false;
        }

        while (begin < end)
        {
            if (str[begin++] != str[end--])
            {
                return false;
            }
        }

        return true;
    }    
};

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号