zoukankan      html  css  js  c++  java
  • LeetCode 132 Palindrome Partitioning II

    LeetCode 132 Palindrome Partitioning II

    思路,和上一题一样,先将所有回文串取出。

    然后用BFS,找到最小的切割数就可以。

    因为没有要求输出字符串,所以结构体中的string 属性可以去掉,防止内存超限。

    c++

    struct Node
    {
        int l;
        int r;
        Node(){}
        Node(int l,int r)
        {
            this->l =l;
            this->r =r;
        }
    }a[1000005];
    class Solution {
    public:
        int tag=0;
        int vis[100005];
      
        int minCut(string s) {
      
            int l =s.length();
        
            for(int i=0;i<l;i++)
            {
                vis[i]=999999;
            }
          
            for(int i=l;i>=1;i--)
            {
                for(int j=0;j+i-1<l;j++)
                {      
                    if(judge(s.substr(j,i)))
                    {
                        a[tag++]=Node(j,j+i-1);
                    }
                }
            }
            
            queue<pair<Node,int>> q;
            for(int i=0;i<tag;i++)
            {
                 if(a[i].l==0)
                 {
                     q.push(make_pair(a[i],1));
                     vis[a[i].r] = min(vis[a[i].r],1);
                 }
            }
            while(!q.empty())
            {
                pair<Node,int> term =q.front();
                q.pop();
                if(term.first.r == l-1)
                    return term.second-1;
                for(int i=0;i<tag;i++)
                {
                    if(a[i].l==term.first.r+1)
                    {
                        if(vis[a[i].r]>term.second+1){
                            q.push(make_pair(a[i],term.second+1));
                            vis[a[i].r] = term.second+1;
                        }
                        
                    }
                }
            }
        }
       
        bool judge(string s)
        {
            int l = s.length();
    
            for(int i=0,j=l-1;i<j;i++,j--)
            {
                
                if(s[i]!=s[j])
                    return false;
            }
            
    
           
            return true;
        }
    };
    
  • 相关阅读:
    CF1132G
    CF1129B
    CF1131G
    CF1109D
    CF1110H
    CF1106F
    my.cnf 配置
    mysql 导入导出
    mysql 批量删除表数据
    国内开源镜像站
  • 原文地址:https://www.cnblogs.com/dacc123/p/9935058.html
Copyright © 2011-2022 走看看