代码随想录算法训练营第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,一经查实,立即删除!

相关文章

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

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

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

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

基于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…

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…

VMware Workerstation开启虚拟机后,产生乱码名称日志文件

问题情况 如下图所示&#xff0c;我的虚拟机版本是16.1.2版本&#xff0c;每次在启动虚拟机之后&#xff0c;D盘目录下都会产生一个如图下所示的乱码名称文件。同时&#xff0c;虚拟机文件目录也是杂乱不堪&#xff0c;没有按照一台虚拟机对应一个文件夹的形式存在。 问题处理…

机器,学习没有捷径

1 捷径学习 1.1 你捷径学习了么 深度学习因为其优异的学习能力&#xff0c;已经成为推动人工智能发展当之无愧的主力军。深度学习在NLP和CV等不同的场景下都展现了优异的能力。但深度学习也存在一个与生俱来的问题&#xff1a;捷径学习。 捷径学习中的捷径表示的是一种有缺陷…

Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错

文章目录 Solr部署Docker部署二进制部署 Tips:Solr设置账号密码方法1&#xff1a;(不使用)方法2&#xff1a; Core Admin 添加新的core报错Solr数据迁移 Solr部署 Docker部署 docker run -d -p 8983:8983 --name solr solr:latest docker run -d -p 8983:8983 -v /opt/solr:/…

学会python——密码加密(python实例四)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、对输入的字符加密 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强…

Hexapod C-887使用手册 -- 4,5,6

4 - 拆包 小心拆包C-887 根据合同和发货注意比较发货范围的内容&#xff1a; 检查危险符号的内容。如果任何零件损坏或缺失&#xff0c;立即联系客服部门。 保存所有包装材料&#xff0c;以防产品需要返厂。 5 - 安装 本章中 安装一般注意 安装PC软件 确保通风 接地C-…

LeetCode --- 132双周赛

题目列表 3174. 清除数字 3175. 找到连续赢 K 场比赛的第一位玩家 3176. 求出最长好子序列 I 3177. 求出最长好子序列 II 一、清理数字 这题直接根据题目&#xff0c;进行模拟即可&#xff0c;大体的思路是遍历字符串&#xff0c;遇到字母就加入答案&#xff0c;遇到数字就…

网络协议四

一、云中网络 物理机的劣势&#xff1a; 1&#xff09;一旦需要扩容 CPU、内存、硬盘&#xff0c;都需要去机房手动弄&#xff0c;非常麻烦 2&#xff09;采购的机器往往动不动几百 G 的内存&#xff0c;而每个应用往往可能只需要 4 核 8G 3&#xff09;一台机器&#xff0c;…