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

回文子串

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];
    }
}
相关推荐
软件算法开发22 分钟前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
superior tigre1 小时前
22 括号生成
算法·深度优先
努力也学不会java2 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
旖-旎2 小时前
二分查找(x的平方根)(4)
c++·算法·二分查找·力扣·双指针
ECT-OS-JiuHuaShan3 小时前
朱梁万有递归元定理,重构《易经》
算法·重构
智者知已应修善业3 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe3 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
C羊驼3 小时前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
菜菜小狗的学习笔记4 小时前
剑指Offer算法题(四)链表
数据结构·算法·链表
myloveasuka4 小时前
[Java]查找算法&排序算法
java·算法·排序算法