力扣第47天--- 第647题、第516题

力扣第47天--- 第647题、第516题

文章目录

一、第647题--回文子串

​ 逻辑梳理清楚了,就还行。没有想象中那么难。注意遍历顺序,i从大到小。

c++ 复制代码
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()-1; j++){
                if(s[i] == s[j]) {
                    if (j-i <=1) {
                        dp[i][j] = true;
                        result++;
                    }
                    else {
                        dp[i][j] = dp[i+1][j-1];
                        if (dp[i][j]) result++;
                    }
                }
            }
        }
    return result;
    }
};

二、第516题--最长回文子序列

​ 还可以吧,跟上一题差不多。遍历顺序一样,但是要注意,j的遍历起点为i+1,因为递归的时候涉及到i+1,会导致越界。递推公式,要想一想,但是难度不大。

c++ 复制代码
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++){
               // cout << dp[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]);
            }
        }
        return dp[0][s.size()-1];
    }
};
相关推荐
北域码匠5 分钟前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
手写码匠1 小时前
手写 GraphRAG:从零实现图增强检索增强生成系统
人工智能·深度学习·算法·aigc
BomanGe11 小时前
NSK重载高刚性滚珠丝杠技术详解
经验分享·算法·规格说明书
Matrix_112 小时前
手机里的计算摄影:广角形变校正算法
人工智能·算法·智能手机·计算摄影
WBluuue2 小时前
数据结构与算法:有序表(二):跳表
数据结构·c++·算法·skiplist
IT龟苓膏2 小时前
并发深度解析】硬核手撕 ForkJoinPool + WorkStealing + CompletableFuture 底层源码与大厂面试演练
面试·职场和发展
x138702859573 小时前
c语言中srtlen(指针使用计算字符长度)、传值和传址调用
c语言·开发语言·算法·visual studio
海兰3 小时前
【实用程序】电商销售分析仪表盘 — 从零搭建一个AI参与的全栈数据洞察系统
人工智能·学习·算法
zwenqiyu4 小时前
P5283 [十二省联考 2019] 异或粽子题解
c++·学习·算法
wayz114 小时前
Momentum:TSI(真实强度指数)技术指标详解
算法·金融·数据分析·量化交易·特征工程