代码随想录算法训练营|五十六天

回文子串

647. 回文子串 - 力扣(LeetCode)

dp含义:表示区间内[i,j]是否有回文子串,有true,没有false。

递推公式:当s[i]和s[j]不相等,false;相等时,情况一,j-i<=1,说明要么"a"或者"aa"这两种情况;情况二:dp[i+1,j-1]是true,例如"cbabc"。

(这里图画错,j和i换个位置)

cs 复制代码
public class Solution {
    public int CountSubstrings(string s) {
        bool[,] dp = new bool[s.Length,s.Length];
        int result = 0;

        for(int i=s.Length-1;i>=0;i--){
            for(int j=i;j<s.Length;j++){
                if(s[i] == s[j] && (j-i<=1 || dp[i+1,j-1])){
                    result++;
                    dp[i,j] = true;
                }
            }
        }

        return result;
    } 
}

最长回文子序列

516. 最长回文子序列 - 力扣(LeetCode)

dp含义:表示区间内[i,j]的回文子序列的长度dp[i,j]

cs 复制代码
public class Solution {
    public int LongestPalindromeSubseq(string s) {
        int[,] dp = new int[s.Length,s.Length];
        for(int i=0;i<s.Length;i++)dp[i,i] = 1;

        for(int i=s.Length-1;i>=0;i--){
            for(int j=i+1;j<s.Length;j++){
                if(s[i] == s[j]){
                    dp[i,j] = dp[i+1,j-1]+2;
                }else{
                    dp[i,j] = Math.Max(dp[i,j-1],dp[i+1,j]);
                }
            }
        }
        return dp[0,s.Length-1];
    }
}
相关推荐
查理零世15 分钟前
【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
python·算法·蓝桥杯
仟濹16 分钟前
【二分搜索 C/C++】洛谷 P1873 EKO / 砍树
c语言·c++·算法
紫雾凌寒25 分钟前
解锁机器学习核心算法|神经网络:AI 领域的 “超级引擎”
人工智能·python·神经网络·算法·机器学习·卷积神经网络
京东零售技术1 小时前
AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践
算法
MiyamiKK572 小时前
leetcode_位运算 190.颠倒二进制位
python·算法·leetcode
C137的本贾尼2 小时前
解决 LeetCode 串联所有单词的子串问题
算法·leetcode·c#
青橘MATLAB学习2 小时前
时间序列预测实战:指数平滑法详解与MATLAB实现
人工智能·算法·机器学习·matlab
lingllllove2 小时前
matlab二维艾里光束,阵列艾里光束,可改变光束直径以及距离
开发语言·算法·matlab
88号技师2 小时前
2025年2月一区SCI-海市蜃楼搜索优化算法Mirage search optimization-附Matlab免费代码
开发语言·人工智能·算法·机器学习·matlab·优化算法
在雨中6123 小时前
【找工作】C++和算法复习(自用)
c++·算法