LeetCode 72. Edit Distance 115. Distinct Subsequences 字符串 DP

智慧园区——解读零碳智慧园区全域双碳管理建设方案【附全文阅读】 《零碳智慧园区全域双碳管理建设方案》为园区开发运营企业、政府部门及绿色能源服务商等提供系统性指导。方案基于"背景-理念-路径"框架,首先分析全球双碳趋势及我国园区高碳排放现状,明确零碳园区价值;其次提出"数字+绿色"双动力理念,构建数字底座与绿色能源体系;最后详细规划实施路径,包括碳排查、绿能规划、能效优化、碳交易等全流程管理,结合数字孪生技术实现可视化管控,助力园区实现碳中和目标。 阅读详情

72. Edit Distance

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)

You have the following 3 operations permitted on a word:
a) Insert a character
b) Delete a character
c) Replace a character

题目链接

题目描述
给定字符串word1和word2,求从word1通过insert,delete,replace三种操作达到word2的最少操作。
思路
典型的动态规划题目,三种状态转移方程,dp[i][j]代表着从word1的前i个字符转换到word2前j个字符的最少操作。


public class EditDistance {
    public int minDistance(String word1, String word2) {
        int[][] dp = new int[word1.length()+1][word2.length()+1]; 
        for ( int i=0; i<=word1.length(); i++ ) 
            dp[i][0] = i; 
        for ( int i=0; i<=word2.length(); i++ ) 
            dp[0][i] = i; 
        for ( int i=1; i<=word1.length(); i++ ) {
            for ( int j=1; j<=word2.length(); j++ ) {
                int insert = dp[i][j-1] + 1;  
                int delete = dp[i-1][j] + 1; 
                int replace = dp[i-1][j-1] + (word1.charAt(i-1)==word2.charAt(j-1)?0:1); 
                dp[i][j] = Math.min(delete, Math.min(insert, replace));
            }
        }
        return dp[word1.length()][word2.length()];
    }
}

115. Distinct Subsequences

Given a string S and a string T, count the number of distinct subsequences of S which equals T.

A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, “ACE” is a subsequence of “ABCDE” while “AEC” is not).

Here is an example:
S = “rabbbit”, T = “rabbit”

Return 3.

题目链接
题目描述
给定字符串S和T,求S通过删除操作,一共有多少种办法变成T;
dp[i][j]代表着从S的前i个字符转换到T前j个字符的方法数目。在遍历的时候
如果S[i-1]==T[j-1] 那么S[i-1]可保留,也可删除。
如果S[i-1] !=T[j-1] 那么S[i-1]只能删除。


public class DistinctSubsequence {
    public int numDistinct(String S, String T) {
        int[][] dp = new int[S.length()+1][T.length()+1]; 
        for ( int i=0; i<=S.length(); i++ ) {
            dp[i][0] = 1 ; 
        }
        for ( int j=1; j<T.length()+1; j++ ) {
            for ( int i=j; i<S.length()+1; i++ ) {
                if ( S.charAt(i-1)==T.charAt(j-1) ) {  //下标错误!
                    dp[i][j] = dp[i-1][j-1] + dp[i-1][j]; 
                } else {
                    dp[i][j] = dp[i-1][j]; 
                }
            }
        }
        return dp[S.length()][T.length()];
    }
}
海康VisionMaster与西门子PLC1200进行S7通信 通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。...... 阅读详情

相关推荐

从“盲控”到“预见”:聊聊永磁同步电机负载观测器(PMSM Load Observer)如何让控制更丝滑

本文深入探讨了永磁同步电机负载观测器(PMSM Load Observer)如何通过前馈补偿和转动惯量辨识技术实现智能抗扰控制。从传统‘盲控’到预见性调节,负载观测器显著减少转速波动和能耗,提升系统响应速度。文章详细解析了观测器算法架构、工程调参技巧及前沿发展趋势,为电机控制领域提供实用解决方案。

weixin_33737774的博客 406

蓝桥杯 出栈顺序 DP

看到大神们都是卡特兰数,不懂。。只能用dp的思想写一下 #include using namespace std ; int main() { int f[20]; memset( f,0,sizeof f ) ; f[0] = f[1] = 1; f[2] = 2; f[3] = 5; for ( int i=4; i<=16; i++ ) for

Peppermint__的博客 598

RobotStudio码垛机器人创建过程

首先导入一个IRB2600机器人,移动夹具的本地坐标原点,使原点位置为顶面中心(与法兰盘连接的部位)。对齐夹爪Smart组件的本地坐标和机器人末端法兰盘的坐标...

个人博客 1万+

Bing it UVALive - 4764 DP

题目: 对于第n张牌,它的最大得分的bing的位置来源于两种情况:   1 上一张(得分只能递增)   2  相同值得最近位置 (可再次加分)   #include using namespace std; const int N = 1e5+10; int last[N],dp[N]; int main() { int n,num; while( cin>>n )

Peppermint__的博客 480

TongWeb微服务部署实战:Nacos注册与网关路由的疑难解析

本文分享了将Spring Cloud微服务迁移至TongWeb应用服务器时,解决Nacos服务注册失败与Spring Cloud Gateway路由失效的实战经验。针对Nacos注册问题,通过实现ApplicationRunner接口并利用JMX获取容器端口,实现了手动注册;针对网关路由问题,建议将基于WebFlux的Gateway模块改为JAR包独立部署,以保障其原生运行环境。文章为在TongWeb上进行微服务部署提供了关键的问题排查思路与混合架构部署的最佳实践。

weixin_29209801的博客 240

(入门向)在Ubuntu22.04.3安装Matlab2021b,以及无法安装在当前目录下的解决办法(见最后)

还有这个/usr/local是只读状态,我试过sudo chmod..去改那个文件的读,结果还是安装不了,我不是这个默认路径,因为它文件夹还是只读,于是我在matlab2021b下创了一个bin,并选上。输入完成后,依次按y,因为里面有三个文件,他会让你确定3次密码,直接yyy跳过即可。你可能会遇到装不下的情况,这个软件占30g,可是你分配给虚拟机就剩10g。,于是我去Downloads下建了一个matlab2021b文件夹,果然好使,3).此时,会提示你输入密码,因为这个rar是有密码的,

harrype的博客 7286

51Nod LCS 最长公共子序列 打印路径

题目 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。 Input 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) Output 输出最长的

Peppermint__的博客 418

脑机接口(BCI)从原理到开发实战 09|SSVEP应用:通过视觉刺激控制设备

本文介绍了稳态视觉诱发电位(SSVEP)脑机接口技术。SSVEP是一种高效的非侵入式BCI范式,当用户注视特定频率闪烁的视觉刺激时,大脑枕叶会产生对应的节律性响应。文章详细阐述了SSVEP的神经机制、刺激范式设计、数据预处理方法,重点讲解了典型相关分析(CCA)这一核心识别算法。相比运动想象和P300范式,SSVEP具有信息传输率高(60-100 bits/min)、信号稳定、无需训练等优势,在高速拼写、设备控制等领域应用广泛。文章还提供了完整的电极选择、滤波、分段等预处理流程,以及CCA和滤波器组CCA的

小明的博客 1353

hdu 3664 DP 递推

思路:dp[i][j] 表示序列长度是i的情况下,k-value 是j 的排列数。j可以通过上一层的两种状态转移而来。一是上一层已经是j的,只能在最后插入或者找ai&gt;i的置换。二是上层是j-1的,那么可以找出ai&lt;=i的进行置换,一共是i-(j-1)种。递推关系式是dp[i][j] = dp[i-1][j]*(j+1) + dp[i-1][j-1]*(i-j);#include &lt...

Peppermint__的博客 411

CondaHTTPError: HTTP 404 NOT FOUND for url

用conda创建新环境时出现问题了。

qq_40713201的博客 1269

【灰度共生矩阵(GLCM)原理及代码实现】

文章主旨详细介绍灰度共生矩阵(Gray-Level Co-occurrence Matrix, GLCM)的生成原理、核心特征量及其在图像纹理分析中的应用,并提供了可运行的Python代码实现。该网页是一篇理论结合实践的优秀技术文章。它不仅清晰地解释了GLCM这一经典纹理分析工具背后的数学原理,还提供了完整、可复现的代码,非常适合计算机视觉或图像处理领域的学习者和开发者入门并实践灰度共生矩阵。读者可以通过运行代码来直观理解GLCM如何工作,并提取图像的纹理特征。

blotemj.blog.youkuaiyun.com 180

Dima and Salad CodeForces - 366C 背包DP

#include #include using namespace std; const int N = 1e4+10; const int inf = 1e8; int dp[N],dp2[N]; int a[110],b[110]; int n,k; int main() { int num; scanf("%d%d",&n,&k); for ( int i=1; i

Peppermint__的博客 388

电源完整性分析:PDN阻抗与去耦电容设计——目标阻抗计算与电容选型深度实战

摘要:随着嵌入式处理器主频突破 GHz、多核架构普及,电源完整性(Power Integrity, PI)已成为高速 PCB 设计中不可忽视的关键环节。本文从 PDN(电源分配网络)阻抗模型出发,系统讲解目标阻抗计算方法、去耦电容选型策略、反谐振抑制技术,并结合 STM32F4 核心板的完整设计实例,提供一套可落地的电源完整性工程实践方案。电源完整性设计是一项系统工程,需要从目标阻抗计算电容选型反谐振抑制PCB 布局目标阻抗是设计的起点,由电源电压、纹波要求和瞬态电流决定去耦电容。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

LeetCode 139. Word Break 字符串 DP

Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary words. You may a...

Peppermint__的博客 385

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

UVALive - 5088 Alice and Bob's Trip 树形DP

第一个树形DP,做题的#include using namespace std; const int N = 500500; const int inf = 0x3f3f3f3f; struct node { int v,w; node () {}; node ( int vv,int ww ) {v = vv; w = ww; } }; int n,l,r; int dp

Peppermint__的博客 357

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU 2089 不要62 数位DP

题目:给定范围,求这个范围内不含有4 和 62 的数字有多少个。 两种方法 第一种方法是dfs搜索,顺便记忆化一下,也是数位dp的模板 #include #include #include #include using namespace std; int line[10]; int dp[10][2]; int dfs( int len, int pre,int f

Peppermint__的博客 329

POJ 3186 Treats for the Cows

题目链接 第一个区间dp 思路 :  我们从中间开始拿,作为年份是n的情况一直到1 dp[ i ] [ j ] 代表从第i件拿到第j件的最优解,状态转移方程  dp[i][i+len] = max( (n-len)*d[i] + dp[i+1][i+len] , (n-len)*d[i+len] + dp[i][i+len-1] ); #include using nam

Peppermint__的博客 321

HDU 3652 数位DP

首先知道一个定理: (a+b)%m = (a%m+b%m)%m;思路单独拿出一位来看,是否能被13整除或者从cnt到该位有没有出现出13整除量使用mod记录,是否出现过13用have记录,have==1是前一位是1,have==2,已经出现过13.#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt...

Peppermint__的博客 307

51Nod 1007 正整数分组 递推 DP

题目链接思路:问题是:将所有的正整数分为两组,使得两组的差最小。再将问题转化一下。在使用n个数,分为两组的的所有情况下的差的最小值。dp[i][j]代表用了前i个数,j这个差有没有出现过。那么n个数分为两组的差的全部情况可以有num[n]和dp[n-1][0-maxn]推出。#include &lt;bits/stdc++.h&gt; using namespace std; const in...

Peppermint__的博客 280

hdu Building Shops DP 递推

Building ShopsTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1863    Accepted Submission(s): 665Problem DescriptionHDU’s n classrooms are on ...

Peppermint__的博客 269

FZU 2109 mountain number 数位dp

思路:所有的数位dp长一个模样。考虑一下,在某一位上的往下递归,可能和哪几个条件有关。1.位数2.前一位的值3.当前是奇数位还是偶数位。* 注意前导零的时候后,默认pre是最大值9。根据数位dp模板即可写出#include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cstring...

Peppermint__的博客 266

51Nod 1009 1042 数位DP

题目链接 给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。 例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。 Input 输入N(1 <= N <= 10^9) Output 输出包含1的个数 Input示例 12 Output示例 5 思路: 初学数位dp第二题。

Peppermint__的博客 249

LeetCode2461~2480题目解析

LeetCode2461~2480题目解析

jiaomubai的博客 138

LeetCode 每日一题 2026/11/2-2026/11/8

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 181

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 210

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 368

Hash表:两数之和、字母异位词分组、最长连续序列 [力扣 Hot100]

三道高频哈希表应用题:两数之和(利用HashMap快速查找补数)、字母异位词分组(排序后作为键分组)、最长连续序列(通过HashSet去重并仅从序列起点扩展)。核心思想均为借助哈希结构优化查找效率,避免重复计算。同时提及双指针等其他解法思路,体现算法设计中“空间换时间”的典型策略。

2403_87560480的博客 223
上一篇: LeetCode 90. Subsets II 递归
下一篇: LeetCode 139. Word Break 字符串 DP
Peppermint__
博客等级 码龄10年 4粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值