某口 313场周赛 对字母串可执行的最大删除数

https://leetcode.cn/problems/maximum-deletions-on-a-string/

思路:倒序二层遍历求 相同连续前缀字符串长度。 倒序算答案。

class Solution {
public:
    int deleteString(string s) {
        string t=s;
        sort(t.begin(),t.end());
        if( t[0]==t[t.size()-1] ) return s.size();
        int n=s.size();
        int lcp[n+1][n+1];
        int dp[n];
        memset(dp,0,sizeof(dp));
        memset(lcp,0,sizeof(lcp));
        for( int i=n-1;i>=0;i-- ){
            for( int j=n-1;j>i;j-- ){
                if( s[i]==s[j] ) lcp[i][j]=lcp[i+1][j+1]+1;
            }
        }
        for( int i=n-1;i>=0;i-- ){
            for( int j=1;i+2*j<=n;j++ ){
                if( lcp[i][j+i]>=j ) dp[i]=max(dp[i],dp[i+j]);
            }
            dp[i]+=1;
        }
        return dp[0];
    }
};
全部评论

相关推荐

昨天 13:16
湖南工学院 Java
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
酷酷我灵儿帅:这去不去和线不线下面说实话没啥关系
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务