力扣第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];
    }
};
相关推荐
葫三生几秒前
如何评价《论三生原理》在科技界的地位?
人工智能·算法·机器学习·数学建模·量子计算
拓端研究室2 小时前
视频讲解:门槛效应模型Threshold Effect分析数字金融指数与消费结构数据
前端·算法
随缘而动,随遇而安4 小时前
第八十八篇 大数据中的递归算法:从俄罗斯套娃到分布式计算的奇妙之旅
大数据·数据结构·算法
IT古董5 小时前
【第二章:机器学习与神经网络概述】03.类算法理论与实践-(3)决策树分类器
神经网络·算法·机器学习
Alfred king7 小时前
面试150 生命游戏
leetcode·游戏·面试·数组
水木兰亭8 小时前
数据结构之——树及树的存储
数据结构·c++·学习·算法
June bug8 小时前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
Jess078 小时前
插入排序的简单介绍
数据结构·算法·排序算法
老一岁8 小时前
选择排序算法详解
数据结构·算法·排序算法
xindafu9 小时前
代码随想录算法训练营第四十二天|动态规划part9
算法·动态规划