当前位置: 首页 > news >正文

面试150 判断子序列

在这里插入图片描述

思路

在思路上可以联想到动态规划。我们首先定义一个二维数组 dp[i][j],表示字符串s的前 i 个字符在字符串 t 的前 j个字符中,作为子序列所能匹配的最长长度。初始化dp数组后,遍历 s和 t的字符:若当前字符 s[i-1] == t[j-1],说明两字符匹配,可以在之前的基础上加一,即 dp[i][j] = dp[i-1][j-1] + 1;否则,说明当前位置不匹配,需要从之前的状态中选择最大值回退,即 dp[i][j] = max(dp[i-1][j], dp[i][j-1])。每次更新时,可记录 dp[i][j] 的最大值 result。最后判断 result 是否等于字符串 s的长度,若相等则说明 s 是 t的一个子序列,否则不是。

class Solution:def isSubsequence(self, s: str, t: str) -> bool:m=len(s)n=len(t)dp=[[0]*(n+1) for _ in range(m+1)]dp[0][0]=0result=0for i in range(1,m+1):for j in range(1,n+1):if s[i-1]==t[j-1]:dp[i][j]=dp[i-1][j-1]+1elif s[i-1]!=t[j-1]:dp[i][j]=max(dp[i-1][j],dp[i][j-1])if dp[i][j]>result:result=dp[i][j]if m==result:return Trueelse:return False

相关文章:

  • Jenkins执行Jenkinsfile报错
  • 频宽是什么: 0.35/Tr、0.5/Tr?
  • Spring AI Alibaba
  • windows下 tomcat的安装部署
  • 多租户多会话隔离存储架构的完整实现方案
  • GNSS位移监测站在大坝安全中的用处
  • 物联网与低代码:Node-RED如何赋能工业智能化与纵横智控的创新实践
  • Java常用设计模式详解
  • TCP 重传机制详解:原理、变体与故障排查应用
  • Prompt工程解析:从指令模型到推理模型的提示词设计
  • k8s基础概念和组件介绍
  • 【UniApp 日期选择器实现与样式优化实践】
  • 构建数据“高速路”绿算技术亮相数据要素联盟可信数据空间生态交流会,解锁可信数据空间新动能
  • 开启 DMARC 的作用对发件域名来说
  • 大模型解码基础知识笔记
  • 【electron】electron中为什么要废弃remote,原因以及解决方案——使用IPC通信
  • RAG工程落地:全链路观测和性能监控
  • Python 将文件夹中的所有文件打包成Zip压缩包
  • PyQt开发完整指南
  • 亚矩阵云手机多开赋能Snapchat矩阵运营:技术原理与场景化破局