代码随想录算法训练营第36期DAY58

DAY58

今天的主题是:编辑距离。在字符串进行增删字符的操作。

392判断子序列,简单

首先想到快慢双指针:

通过了,很好:

  1. class Solution {
  2. public:
  3.     bool isSubsequence(string s, string t) {
  4.         int slow=0;
  5.         for(int fast=0;fast<t.size();fast++){
  6.             if(t[fast]==s[slow]) slow++;
  7.         }
  8.         if(slow==s.size()) return true;
  9.         return false;
  10.     }
  11. };

动态规划:没有想法尤其是遍历顺序及递推公式(不要用bool 就好想了 ),积累经验吧:

要看出来,这题和求最长公共子序列是一样的,递推公式有点区别,但也是继承

使用二维数组来记录字符比较结果。

Dp[i][j] 相同长度。

Code:

写了两个for循环,运行时间竟然是最优的,击败100%,奇怪了

  1. class Solution {
  2. public:
  3.     bool isSubsequence(string s, string t) {
  4.         vector<vector<int>> dp(s.size()+1,vector<int>(t.size()+1,0));
  5.         for(int i=1;i<=s.size();i++){
  6.             for(int j=1;j<=t.size();j++){
  7.                 if(s[i-1]==t[j-1]) dp[i][j]=dp[i-1][j-1]+1;
  8.                 else dp[i][j]=dp[i][j-1];
  9.             }
  10.         }
  11.         return dp[s.size()][t.size()]==s.size();
  12.     }
  13. };

115不同的子序列,困难

这题要做的要是编辑距离(仅删除似乎不够,还需要把删除的添加回来,但是这些操作都只在一个字符串上进行),积累经验:

显然如果是求连续子序列,就可以用KMP(记得复习KMP模板);

尝试着写递推公式,纸质笔记:

Code:

注意取模操作。

  1. class Solution {
  2. public:
  3.     long long pow(int n){
  4.         return 1e9;
  5.     }
  6.     int numDistinct(string s, string t) {
  7.         vector<vector<long long>> dp(s.size()+1,vector<long long>(t.size()+1));
  8.         for(int i=1;i<s.size()+1;i++) dp[i][0]=1;
  9.         for(int i=1;i<t.size()+1;i++) dp[0][i]=0;
  10.         dp[0][0]=1;
  11.         for(int i=1;i<=s.size();i++){
  12.             for(int j=1;j<=t.size();j++){
  13.                 if(s[i-1]==t[j-1]) dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%(int)(pow(9)+7);
  14.                 else dp[i][j]=(dp[i-1][j])%(int)(pow(9)+7);
  15.             }
  16.         }
  17.         return dp[s.size()][t.size()];
  18.     }
  19. };

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录:UA_Client_readValueAttribute 读取失败 C0错误码

描述 当读取时返回 OPC-DA 成功质量代码时,UA_Client_readValueAttribute 读取失败。 使用 OPC DA 模拟器OPC Server SimulatorOPC Expert DA-UA 转换器Download OPC Expert for free. No installation required. __UA_Client_readAttribute使用eg读取模拟节点的值属性之一…

Android 13 高通设备热点低功耗模式(2)

前言 之前写过一篇文章:高通热点被IOS设备识别为低数据模式,该功能仿照小米的低数据模式写的,散发的热点可以达到被IOS和小米设备识别为低数据模式。但是发现IOS设备如果后台无任何网络请求的时候,息屏的状态下过一会,会自动断开热点的连接。 分析 抓取设备的热点相关的…

4、视觉里程计:特征点法、直接法和半直接法

先说一下我自己的总体理解&#xff1a; 特征点法&#xff0c;基于最小化重投影误。 提取特征点&#xff0c;计算描述子&#xff0c;匹配&#xff0c;运动估计。 计算描述子和匹配部分可以用光流法跟踪替代 总体上先知道像素之间的关系&#xff0c;在估计运动&#xff08;最…

2的n次方表格

做项目的时候有时候会担心数据溢出&#xff0c;常用的数据长度就有8位、16位、32位、64位。相信八位都很容易记住就是256&#xff0c;16位是65536&#xff0c;但是数字一大就记不住了&#xff0c;甚至连换算为十进制是多少位都不得而知。 下表中就有1 ~ 64位数据的范围。 0次…

linux中sed命令和awk命令如何使用??????

sed命令 作用&#xff1a;修改/替换源文件中的内容 格式&#xff1a; sed 选项 操作 目标文件 选项&#xff1a; -i&#xff1a;修改初始文件【如果不加-i&#xff0c;那就是仅仅修改内存中的文件副本】 案例&#xff1a;将1.txt文件中的tom修改成jerry sed -i "s/…

基于matlab提取一维数组中非nan的数据

一、使用逻辑索引 使用逻辑索引来选择数组中所有非NaN的元素。逻辑索引是与原数组同型的逻辑数组&#xff0c;true对应的位置将会被选中。 % 假设a是一维数组 a [1, 2, NaN, 4, NaN, 6];% 使用逻辑索引提取非NaN元素 non_nan_elements a(~isnan(a)); 二、使用isnan函数和fi…

计算机二级Access选择题考点

在Access中&#xff0c;若要使用一个字段保存多个图像、图表、文档等文件&#xff0c;应该设置的数据类型是附件。在“销售表"中有字段:单价、数量、折扣和金额。其中&#xff0c;金额单价x数量x折扣&#xff0c;在建表时应将字段"金额"的数据类型定义为计算。若…

WebSocket 基础使用

1.基本概念 WebSocket 支持双方通信即服务端可以主动推送给用户端&#xff0c;用户端也可以主动推送消息给服务器。前端必须进行协议升级为 WebSocket 名称值Upgradewebsocket 2. 后端代码 package com.koshi.websocket.server;import com.alibaba.fastjson.JSON; import com…

RBAC权限实战

一、项目结构说明、搭建以及初步验证 引入SSM框架依赖: <dependencies> <dependency> <groupId>javax.servlet…

【算法-力扣】72. 编辑距离(动态规划)

目录 一、题目描述 二、解题思路 三、参考答案 一、题目描述 编辑距离 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符 删除一个字符 替换一个字符 示例 1&#…

解析FTP服务器:从基础知识到vsftpd实战操作

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

组合和外观模式

文章目录 组合模式1.引出组合模式1.院系展示需求2.组合模式基本介绍3.组合模式原理类图4.解决的问题 2.组合模式解决院系展示1.类图2.代码实现1.AbsOrganizationComponent.java 总体抽象类用于存储信息和定义方法2.University.java 第一层&#xff0c;University 可以管理 Coll…

商城系统如何选型?

近日&#xff0c;拼多多发布618百亿补贴活动首周战报。5月19日活动启动一周内&#xff0c;百亿补贴商家参与数量相比去年618首周增长逾90%。其中&#xff0c;农产品商家同比增长83%&#xff0c;数码家电商家同比增长86%&#xff0c;美妆商家同比增长105%。 作为一家成立还不到1…

python中装饰器的用法

最近发现装饰器是一个非常有意思的东西&#xff0c;很高级&#xff01; 允许你在不修改函数或类的源代码的情况下&#xff0c;为它们添加额外的功能或修改它们的行为。装饰器本质上是一个接受函数作为参数的可调用对象&#xff08;通常是函数或类&#xff09;&#xff0c;并返…

uaGate SI自动化状态监测和工业4.0解决方案

克劳斯玛菲集团&#xff08;于2016年被中国化工集团公司收购&#xff09;为其注塑和反应/挤出系统采用了uaGate SI网关技术并实行了开放且独立于平台的OPC UA标准&#xff0c;以用于设备状态自动化监控&#xff0c;这大大提高了产量并避免了机器停机问题。 自动化状态监测提高了…

文件操作学不懂,小代老师带你深入理解文件操作(下卷)

文件操作学不懂&#xff0c;小代老师带你深入理解文件操作下卷 6. ⽂件的随机读写6.1 fseek6.2 ftell6.3 rewind 7. ⽂件读取结束的判定7.1 被错误使⽤的 feof 8. ⽂件缓冲区 6. ⽂件的随机读写 6.1 fseek 根据⽂件指针的位置和偏移量来定位⽂件指针&#xff08;⽂件内容的光…

Golang使用讯飞星火AI接口

一、API申请 https://www.bilibili.com/video/BV1Yw411m7Rs/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 注册申请&#xff0c;需要在此页面获取appid、apisecret、apikey https://www.xfyun.cn/ https://console.xfyun.cn/ser…

wsl子系统ubuntu20.04 设置docker服务开机自启动

docker在重要性毋庸置疑。掌握虚拟化必备工具。大家个人都会有台式机&#xff0c;那么windows的wsl子系统ubuntu应该都会开启来熟悉linux分布式开发。docker是客服OS限制的有利工具。那就开始准备docker环境吧。 docker安装 docker安装前建议apt-get源换国内源。这个题目太多…

Python----多线程使用

在运行代码的时候&#xff0c;总会想让程序同时运行几个东西&#xff0c;这个时候就需要用到多线程。可以说使用python中的threading库来实现多线程&#xff0c;多线程运行的具体线程数量和每个线程的执行时间由操作系统的调度策略决定。 比如我现在需要同时发起请求&#xff…

2024.6.14KMP算法学习记录

目录 一、学习视频 二、跟练代码 主要是想起到一个记录的作用 一、学习视频 【最浅显易懂的 KMP 算法讲解】 https://www.bilibili.com/video/BV1AY4y157yL/?share_sourcecopy_web&vd_sourcedc0e55cfae3b304619670a78444fd795 二、跟练代码 代码来自视频 # KMP算法…