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

回文子串

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

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

递推公式:当si和sj不相等,false;相等时,情况一,j-i<=1,说明要么"a"或者"aa"这两种情况;情况二:dpi+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的回文子序列的长度dpi,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];
    }
}
相关推荐
灯澜忆梦2 分钟前
GO_函数_1
算法
言乐622 分钟前
Python实现建造微服务商城后台
开发语言·python·算法·微服务·架构
凉云生烟1 小时前
机器学习 02- KNN算法
人工智能·算法·机器学习
wabs6661 小时前
关于动态规划【力扣583.两个字符串的删除操作的思考】
算法·leetcode·动态规划
可编程芯片开发1 小时前
空气流量和空气压力参数解耦系统simulink建模与仿真
算法
_Doubletful1 小时前
妙用位运算:解构汉明距离至100%(提供分析与多解)
c语言·算法·leetcode
凯瑟琳.奥古斯特1 小时前
力扣1013三等分解法与C++实现
开发语言·c++·算法·leetcode·职场和发展
Keven_112 小时前
AcWing算法提高课思路速查:搜索
算法·搜索
沙蒿同学2 小时前
当古诗词遇上 AI:从 38 万句诗词中取一个好名字
python·算法·架构
变量未定义~2 小时前
单调栈、单调队列(模板)、子矩阵(模板)
数据结构·算法·蓝桥杯