3.10 log | 647. 回文子串

news/2024/6/18 21:39:50 标签: 算法, leetcode, 职场和发展

647. 回文子串,516.最长回文子序列

class Solution {
public:
    int countSubstrings(string s) {
        vector<vector<bool>> dp(s.size(),vector<bool>(s.size(),false));
        int result=0;
        for(int i=s.size()-1;i>=0;i--){
            for(int j=i;j<s.size();j++){
                if(s[i]==s[j]){ 
                    if(j-i<=1){
                        dp[i][j]=true;
                        result++;
                    }
                    else if(dp[i+1][j-1]){
                        dp[i][j]=true;
                        result++;
                    }
                }
            }
        }
        return result;
    }
};

这道题用到了二维dp数组,dp[i][j]的含义为【i,j】区间内回文字符串的个数,递推公式为if(s[i]==s[j]) if(j-i<=1),如果j-i相等或者中间只有一个元素,那么dp[i][j]一定为true,result++,if(dp[i+1][j-1]) 如果i与j之间有大于1个素,那么如果sp[i+1][j-1]为true,则dp[i][j]也一定为true,result++,最后返回result

516.最长回文子序列

class Solution {
public:
    int longestPalindromeSubseq(string s) {
        vector<vector<int>> dp(s.size(),vector<int>(s.size(),0));
        for(int i=0;i<s.size();i++) dp[i][i]=1;
        for(int i=s.size()-1;i>=0;i--){
            for(int j=i+1;j<s.size();j++){
                if(s[i]==s[j]) dp[i][j]=dp[i+1][j-1]+2;
                else dp[i][j]=max(dp[i+1][j],dp[i][j-1]);
            }
        }
        return dp[0][s.size()-1];
    }
};

这道题dp[i][j]的含义为【i,j】区间内最长回文子序列长度,所以递推公式为if(s[i]==s[j]) dp[i][j]=dp[i+1][j-1]+2,else dp[i][j]=max(dp[i+1][j],dp[i][j-1]),初始化要注意记得初始化dp[i][i]为1


http://www.niftyadmin.cn/n/5420726.html

相关文章

POS 之 奖励机制

为什么需要有奖惩机制 如果没有奖励&#xff0c;就不会有节点参与POS&#xff0c;运营节点有成本&#xff0c;而奖励正是让运营者获利的方式 如果没有惩罚&#xff0c;网络上会充斥着很多无效节点&#xff0c;会扰乱甚至破坏网络 所有奖励和惩罚在每个 Epoch 实施一次 奖励 什…

鸿蒙OS应用开发之显示图片组件11

前面学习了像素降级处理的方法,这样方便一个图片可以显示在不同大小屏幕的技术,同样不会失真。现在来学习另外一个重要的技术,就是图片处理。图片处理是一个很范的名词,一般来说图片处理都会采用预处理的方法,比如在电脑上采用图形处理软件进行处理,然后再使用到手机的软…

深入理解React中的useReducer:管理复杂状态逻辑的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Spring MVC配置MyBatis vs. Spring Boot配置MyBatis

在Java Web开发中&#xff0c;MyBatis是一个常用的持久层框架&#xff0c;用于简化数据库访问操作。在Spring框架中&#xff0c;我们可以通过Spring MVC和Spring Boot两种方式来集成MyBatis&#xff0c;本文将比较这两种方式的优缺点&#xff0c;并展示它们的具体代码实现。 S…

HTML静态网页成品作业(HTML+CSS)——家乡漳州介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

AI辅助研发

随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&#xff0c;AI辅助研发不仅…

2024蓝桥杯每日一题(时间日期)

一、第一题&#xff1a;日期差值 解题思路&#xff1a;模拟 写一个计算时间的板子两者相减 【Python程序代码】 mon [0,31,28,31,30,31,30,31,31,30,31,30,31] def pd(x):if x%4000 or (x%40 and x%100!0):return Truereturn False def get_day(y,m,d):res 0for i …

前后端交互理解 简易表白墙(servlet)

前后端交互理解 简易表白墙&#xff08;servlet&#xff09; 文章目录 前后端交互理解 简易表白墙&#xff08;servlet&#xff09;后端核心内容前后端交互接口约定后端代码展示 上期介绍过 Servlet API &#xff0c;本篇文章目的是借助 servlet 做出一个完整的网站。在一个网站…