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

浙江省建设厅官方网站信用平台pageadmin自助建站

浙江省建设厅官方网站信用平台,pageadmin自助建站,用微信公众平台做分类广告网站,网站掉权重是怎么回事392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,&quo…

392.判断子序列

力扣题目链接(opens new window)

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1:

  • 输入:s = "abc", t = "ahbgdc"
  • 输出:true

示例 2:

  • 输入:s = "axc", t = "ahbgdc"
  • 输出:false

提示:

  • 0 <= s.length <= 100
  • 0 <= t.length <= 10^4

两个字符串都只由小写字符组成。


双指针法
  1. 初始化两个指针i 用于遍历字符串 sj 用于遍历字符串 t
  2. 遍历字符串 t:使用指针 j 遍历字符串 t,对于 t 中的每个字符,检查是否与 s 中的当前字符(由 i 指向)相匹配。
  3. 匹配字符:如果匹配(即 s[i] == t[j]),则将 ij 同时向前移动;如果不匹配,则只将 j 向前移动。
  4. 检查是否遍历完 s:如果 i 等于 s 的长度,说明 st 的子序列;如果 j 先达到 t 的末尾,则说明 s 不是 t 的子序列。
def isSubsequence(s: str, t: str) -> bool:i, j = 0, 0while i < len(s) and j < len(t):if s[i] == t[j]:i += 1j += 1return i == len(s)# 测试代码
s1, t1 = "abc", "ahbgdc"
s2, t2 = "axc", "ahbgdc"print(isSubsequence(s1, t1))  # 应该输出 True
print(isSubsequence(s2, t2))  # 应该输出 False

115.不同的子序列

力扣题目链接(opens new window)

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)

题目数据保证答案符合 32 位带符号整数范围。

115.不同的子序列示例

提示:

  • 0 <= s.length, t.length <= 1000
  • s 和 t 由英文字母组成

动态规划思路解析

  1. 状态定义

    • dp[i][j] 表示考虑 s 的前 i 个字符和 t 的前 j 个字符时,t 作为 s 的子序列出现的次数。
  2. 状态初始化

    • dp[0][0] = 1:两个空字符串匹配的次数是1。
    • dp[i][0] = 1 对所有 i:如果 t 是空字符串,那么无论 s 是什么,都只有一种方式使 t 成为 s 的子序列(即全部删除 s)。
  3. 状态转移

    • 如果 s 的第 i 个字符与 t 的第 j 个字符相同(s[i - 1] == t[j - 1]),那么 t 的前 j 个字符可以在 s 的前 i - 1 个字符中找到对应的子序列,加上当前匹配的字符,形成新的子序列。同时,t 的前 j 个字符也可能在 s 的前 i - 1 个字符中出现多次,不包括 s[i]。因此,dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
    • 如果不同(s[i - 1] != t[j - 1]),则 s 的第 i 个字符不能用于匹配 t 的第 j 个字符。这时,dp[i][j] = dp[i - 1][j]
  4. 最终结果

    • dp[len(s)][len(t)] 是最终结果,表示 s 的前 len(s) 个字符中 t 的前 len(t) 个字符作为子序列出现的总次数。
def numDistinct(s: str, t: str) -> int:m, n = len(s), len(t)# 初始化一个 (m+1) x (n+1) 的 dp 矩阵dp = [[0] * (n + 1) for _ in range(m + 1)]# 当 t 为空字符串时,s 的子序列中总有一种方式使得 t 为其子序列for i in range(m + 1):dp[i][0] = 1# 填充 dp 矩阵for i in range(1, m + 1):for j in range(1, n + 1):if s[i - 1] == t[j - 1]:# 如果字符匹配,可以选择使用或不使用 s[i-1]dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]else:# 如果字符不匹配,只能选择不使用 s[i-1]dp[i][j] = dp[i - 1][j]return dp[m][n]# 测试代码
s = "babgbag"
t = "bag"
print(numDistinct(s, t))  # 应该输出 5

http://www.yayakq.cn/news/265935/

相关文章:

  • 做网站技术方法有福州做网站的公司电话
  • 王璞网站开发实战软文推广什么意思
  • 网站优化 秦皇岛wordpress 禁用版本
  • 河北网站建设费用抖音代运营报价明细表清单
  • 网站推广的优势电子商务与网站建设课程
  • 泉州握旗公司网站建设昆明pc网站建设
  • 武宁县建设工程招标公告门户网站免费做公众号的网站
  • 静态手机网站基础如何制作橡皮泥 简单
  • 深圳网站设计公司在哪里网站建设有什么工作
  • 企业网站优化关键词实时网站推广的最终目的是
  • 上海有制作网站的电话吗西部数码域名注册查询
  • 口碑好的邯郸网站建设厦门市建设工程交易中心网站
  • 广州做网站专业公司建造师二级报名入口
  • 望城警务督察网站建设快速建站费用
  • 造作网站模版黄骅贴吧海鲜城
  • 网站源码建设模板移动互联网应用软件开发
  • 微擎做网站费用有哪些网站手游做的好的
  • 环球国际网站建设外贸设计网站建设
  • 建设银行网站注销吗seo查询
  • 研究院网站建设软件开发工具具有哪些基本功能
  • 免费 网站 如何做mysql数据库网站
  • 长宁制作网站卯兔科技西安网站建设
  • 东莞网站优化关键词公司雅诗兰黛网络营销策划方案
  • 网站建设除凡科外还有哪些做下载类网站赚钱吗
  • 天津常规网站建设系列wordpress 文档预览
  • 西安专业做网站的公司有哪些免费推荐大全app下载
  • 北京微信网站开发费用创新网站建设方案书
  • 织梦做的网站怎么加弹窗公司网站开发费用怎么做账
  • 网站产品图怎么做淮南 网站建设 有限公司
  • 网站源码文件外贸网站建设外