9.15【A】

2472

定义DPi为以i结尾的回文字符串,所能组成的最大数量的回文字符串数量

有关键洞察为,回文字符串长度最多为k与k+1,对于k+2及后面的所有情况,都可以由贪心归纳为k与k+1

对于1到n的所有下标,dpi可由i-k+1与i-k两个下标得到,即分别对应以i为结尾的字符串长度为k与k+1的情况

首先判断以i为结尾的子串,在k与k+1的情况下是否能构成回文字符串

若都不能,则dpi取0

否则,取max

最终取1到n之间的dpMax

复制代码
class Solution {
public:
    int maxPalindromes(string s, int k) {
        int n=s.size();
        vector<int>dp(n,0);
        bool flag=true;
        for(int i=0;i<(k+1)/2;i++){
            if(s[i]!=s[k-i-1]){
                flag=false;
                break;
            }
        }
        if(flag){dp[k-1]=1;}
        flag=true;
        for(int i=0;i<(k+1)/2;i++){
            if(s[i]!=s[k-i]){
                flag=false;
                break;
            }
        }
        if(flag){dp[k]=1;}
        int res=max(dp[k-1],dp[k]);
        for(int i=1;i<=k;i++){dp[i]=max(dp[i],dp[i-1]);}
        for(int i=k+1;i<n;i++){
            bool flag0=true,flag1=true;
            for(int j=0;j<k/2;j++){
                if(s[i-k+1+j]!=s[i-j]){
                    flag0=false;
                    break;
                }
            }
            for(int j=0;j<(k+1)/2;j++){
                if(s[i-k+j]!=s[i-j]){
                    flag1=false;
                    break;
                }
            }
            dp[i]=max(dp[i],dp[i-1]);
            if(flag0){dp[i]=max(dp[i-k]+1,dp[i]);}
            if(flag1){dp[i]=max(dp[i-k-1]+1,dp[i]);}
            // for(int j=i-k+1;j<=(i+1)/2;j++){
            //     if(s[j]!=)
            // }
            res=max(res,dp[i]);
        }
        return res;
    }
};

正解

相关推荐
lvwangshu9 小时前
CF1882D Tree XOR 题解
动态规划·题解·贪心·dp·树形dp·换根dp·性质题·思维好题·推导题
罗湖老棍子10 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd12 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码13 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n13 小时前
【算法】约瑟夫环问题
java·算法
Interview Aid11213 小时前
Snowflake OA 面试真题:前缀和、BFS 与动态规划
面试·动态规划·宽度优先
l1t13 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil20813 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE14 小时前
10.18【A】
算法
LMT流氓兔14 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain