当前位置: 首页 > 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
http://www.lryc.cn/news/575732.html

相关文章:

  • 【已解决】Android Studio gradle遇到unresolved reference错误
  • 鸿蒙 SplitLayout 组件解析:折叠屏分割布局与多端适配指南
  • 视频关键帧提取
  • 跟着AI学习C#之项目实战-电商平台 Day1
  • Python打卡:Day36
  • mac电脑安装vscode的力扣插件报错解决办法
  • 板凳-------Mysql cookbook学习 (十--11)
  • Spring Boot高并发 锁的使用方法
  • Flutter 多平台项目开发指南
  • 使用java语言,计算202503291434距离当前时间,是否大于三天
  • SQL SERVER存储过程
  • 赋能 Java 工程,飞算科技重新定义智能开发
  • 自动化测试--app自动化测试之给手机设置锁屏图案
  • 桌面小屏幕实战课程:DesktopScreen 11 SPI 水墨屏
  • httpClient连接配置超时时间该设置多长才合适?
  • 从提示工程(Prompt Engineering)到上下文工程(Context Engineering)
  • 【RabbitMQ】多系统下的安装配置与编码使用(python)
  • 深入解析Python多服务器监控告警系统:从原理到生产部署
  • Linux IPV4/IPV6配置终极指南
  • 解锁AI无限潜能!景联文科技数据产品矩阵再升级:多语言题库、海量语料、垂域代码库,全面赋能大模型训练
  • java解决超大二维矩阵数组引起的内存占用过大问题
  • 【redis使用场景——缓存——数据过期策略 】
  • 新手向:Neo4j的安装与使用
  • CTF:PHP 多关卡绕过挑战
  • Flink部署与应用——Flink架构概览
  • 国外开源客服系统chathoot部署,使用教程
  • 信息化系统流程管理模块,企业高价值资产的跨省/市运输审批流程的功能
  • 网络安全之SQL RCE漏洞
  • AI 口语陪练:教育领域的新变革​
  • AI智能体——OpenManus 源码学习