最长公共子序列力扣题

动态规划。
美团暑期面试题,没做过,不会啊。

这个问题的目标是找出两个字符串text1text2的最长公共子序列的长度。

动态规划数组的初始化

首先,代码初始化了一个动态规划(DP)数组dp,其维度为(m + 1) x (n + 1),其中mn分别是text1text2的长度。这个DP数组用于存储子问题的解,dp[i][j]表示text1的前i个字符和text2的前j个字符的最长公共子序列的长度。初始化时,所有元素都设置为0。

dp = [[0] * (n + 1) for _ in range(m + 1)]

填充DP数组

接下来,代码通过两层循环遍历这个DP数组,外层循环变量i从1到m,内层循环变量j从1到n。这里,ij分别代表text1text2当前考虑的字符位置。

for i in range(1, m + 1):for j in range(1, n + 1):

对于每一对(i, j),我们比较text1[i - 1]text2[j - 1](即当前考虑的字符)。

  • 如果这两个字符相等,说明我们找到了一个公共子序列中的字符,所以dp[i][j]应该是这个字符加上之前的最长公共子序列的长度,即dp[i - 1][j - 1] + 1
if text1[i - 1] == text2[j - 1]:dp[i][j] = dp[i - 1][j - 1] + 1
  • 如果这两个字符不相等,那么当前的最长公共子序列的长度将是两种情况中的较大值:一种是不包含text1[i - 1]时的最长公共子序列长度dp[i - 1][j],另一种是不包含text2[j - 1]时的最长公共子序列长度dp[i][j - 1]
else:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])

返回结果

最后,dp[m][n]包含了整个问题的解,即text1text2的最长公共子序列的长度。

return dp[m][n]

这个动态规划解法的核心在于逐步构建解的过程,它利用了子问题的解来解决更大的问题,直到解决了整个问题。通过填充DP数组,我们可以高效地找到两个字符串的最长公共子序列的长度。

整合:

class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:# 计算字符串长度m, n = len(text1), len(text2)# 初始化序列长度数组dp = [[0] * (n + 1) for _ in range(m + 1)]# 双重遍历for i in range(1, m+1):for j in range(1, n+1):# 如果当前字符相等,那最长公共子序列就应该是之前的加上现在的一个if text1[i-1] == text2[j-1]:dp[i][j] = dp[i - 1][j - 1] + 1# 否则,应该是那么当前的最长公共子序列的长度将是两种情况中的较大值# 一种是不含第一个字符串的当前字符# 一种是不含第二个字符串的当前字符else:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])# 返回最终结果return dp[m][n]

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

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

相关文章

九泰智库 | 医械周刊- Vol.17

⚖️ 法规动态 器审中心公示新一期医疗器械优先审批申请审核结果 3月22日,依据原国家食品药品监督管理总局《医疗器械优先审批程序》(总局公告2016年168号),器审中心对申请优先审批的医疗器械注册申请进行了审核,对相关…

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题,kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…

详解从ERP传到MES系统的数据

1、物料需求计划 MES系统提供的物料需求计划与传统BOM-MRP方式提供的物料需求计划有本质的不同。首先,满足产能约束、各种生产约束、优化生产调度、提高工作效率的要求。其次:它有详细的以分钟为单位的时间信息。将这些数据提供给ERP,可以大…

是德科技KEYSIGHT N9938A频谱分析仪

181/2461/8938产品概述: N9938A 是一款使用电池供电的便携式微波频谱分析仪;配置还包括全频段跟踪发生器和前置放大器、干扰分析仪、时间选通、VSWR 和反射测量、内置功率计。 N9938A FieldFox 手持式微波频谱分析仪 主要特性和功能 频率范围&#xff…

美团面试一面凉经

1.自我介绍 2.科研项目提问 没咋准备,说的有点没逻辑 3.问论坛项目 为什么用Redis实现登录?能不能用其他方式实现? 1、Redis 具备高性能 假如用户第一次访问 MySQL 中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将…

000_coolprop_in_matlab在Matlab中使用CoolProp

在Matlab中使用CoolProp 简介 CoolProp是一个开源的热力学性质库,可以计算多种流体的热力学性质。CoolProp支持多种编程语言,包括Python、C、Matlab等。本文将介绍如何在Matlab中使用CoolProp。 CoolProp官网 本文所使用的Matlab版本为R2021a。 在Ma…

每天一个数据分析题(二百二十九)

循环神经网络(RNN)是一种经典的神经网络。考虑到RNN的自然属性和结构,以下哪个任务RNN可能会比其他神经网络架构表现得更好? A. 从固定大小的图片中识别物体 B. 为未来几天的股票价格做时间序列预测 C. 在无标签数据上进行聚类…

C++基础--类和对象(上)--类与类成员及其成员函数

C基础--类和对象(上)--类与类成员及其成员函数 一、类的引入二、类的定义三、类的访问限定符及封装1、访问限定符2、封装 四、类的作用域五、类的实例化六、类的对象大小的计算七、类成员函数的 this 指针1、this指针的引出2、this指针的特性 八、总结 一…

Vit Transformer

一 VitTransformer 介绍 vit : An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 论文是基于Attention Is All You Need,由于图像数据和词数据数据格式不一样,经典的transformer不能处理图像数据,在视觉领域的应…

4、事件修饰符、过滤器、自定义指令、生命周期

一、事件修饰符 按键别名enter 回车 delete 删除键 esc取消键 space 空格键 <script> export default {name: "KeyUp",methods:{keyUp(e){ console.log(e) }},skip(){window.location.href "http:www.xx.com"} } </script> <template>…

鸿蒙应用开发-录音保存并播放音频

功能介绍&#xff1a; 录音并保存为m4a格式的音频&#xff0c;然后播放该音频&#xff0c;参考文档使用AVRecorder开发音频录制功能(ArkTS)&#xff0c;更详细接口信息请查看接口文档&#xff1a;ohos.multimedia.media (媒体服务)。 知识点&#xff1a; 熟悉使用AVRecorder…

super的使用细节

1、super的使用细节 2、super和this的比较

159.乐理基础-和声模板是什么?优缺点与运用要点

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 如果一章没落下&#xff0c;看到这里&#xff0c;但是看不懂什么意思&#xff0c;那就强行下看&#xff0c;看着看着指不…

kaggle-Prediction of Obesity Risk

使用 LGBMClassifier # https://www.kaggle.com/code/ddosad/ps4e2-visual-eda-lgbm-obesity-risk import pandas as pd from lightgbm import LGBMClassifier from sklearn.metrics import accuracy_score from sklearn.model_selection import train_test_split, GridSearch…

Java中的String字符串练习

目录 Java中的String字符串练习 01-用户登录 02-遍历字符串并统计字符个数 03-字符串拼接 04-字符串反转 注意点 05-金额转化(简单) 代码解释: 06-手机号屏蔽 07-身份证号码查看 易错点: 08-敏感词替换 01-用户登录 package com.xiaonan.exercise06;import java.u…

题解:CF1937B(Binary Path)

题解&#xff1a;CF1937B&#xff08;Binary Path&#xff09; 一、 理解题意 1. 题目链接 CodeForces&#xff1b; 洛谷。 2. 题目翻译 给定一个 由 0 0 0 和 1 1 1 组成的 2 2 2 行 n n n 列的网格上寻找一条路径&#xff0c;使得这条路径上所有的数串联起来形成的0…

[leetcode]118.杨辉三角

前言&#xff1a;剑指offer刷题系列 问题&#xff1a; 给定一个非负整数 *numRows&#xff0c;*生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例&#xff1a; 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,…

CKS之镜像漏洞扫描工具:Trivy

目录 Trivy介绍 Trivy安装 Trivy使用命令 容器镜像扫描 打印指定&#xff08;高危、严重&#xff09;漏洞信息 JSON格式输出 HTML格式输出 离线扫描命令 离线更新Trivy数据库 Harbor安装Trivy Trivy介绍 Trivy是一款用于扫描容器镜像、文件系统、Git仓库等的漏洞扫描…

Matlab|基于两阶段鲁棒优化的微网电源储能容量优化配置

目录 主要内容 1.1 目标函数 1.2 约束条件 1.3 不确定变量 部分代码 结果一览 下载链接 主要内容 程序主要复现的是《考虑寿命损耗的微网电池储能容量优化配置》&#xff0c;解决微网中电源/储能容量优化配置的问题&#xff0c;即风电、光伏、储能以及燃气轮机…

LeetCode - 执行子串操作后的字典序最小字符串

题目要求经过操作后的字符串的字典序要比之前小。 在做这道题的之后陷入了一个误区&#xff0c;就是看a的位置&#xff0c;a-1之后z&#xff0c;z的字典序比a大&#xff0c;所以要尽可能的避免a变成z&#xff0c;但是字典序的比较是从前往后比较的&#xff0c;纠结于a变成z&am…