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

【LeetCode】392.判断子序列

文章目录

  • 【题目链接】
  • 【题目描述】
  • 【解题思路】

【题目链接】

392.判断子序列

【题目描述】

在这里插入图片描述

【解题思路】

本题采用 双指针法 是最优解,核心思路是通过两个指针分别遍历 s 和 t,逐步匹配 s 中的字符,利用 “子序列只需保持相对顺序” 的特性,高效判断匹配结果。

具体逻辑如下:

  • 初始化指针:定义两个指针 i 和 j,分别指向 s 的起始位置(i=0)和 t 的起始位置(j=0)。
    双指针遍历:
  • 同时遍历两个字符串,只要 i 未遍历完 s(i < s.size())且 j 未遍历完 t(j < t.size()),就持续循环。
  • 若当前 s[i] 与 t[j] 相等,说明匹配成功,将 i 向后移动一位(继续匹配 s 的下一个字符)。
    无论是否匹配成功,j 都需向后移动一位(继续遍历 t 的下一个字符,寻找可能匹配的字符)。
  • 判断结果:遍历结束后,若 i 等于 s 的长度(i == s.size()),说明 s 中所有字符都在 t 中按顺序匹配成功,返回 true;否则返回 false。

C++ 实现:

class Solution {
public:bool isSubsequence(string s, string t) {int n = s.size();int m = t.size();int i=0; int j=0;while(i<n && j<m){if (s[i] == t[j]){i++;}j++;}return i==n;}
};

Python实现:

class Solution:def isSubsequence(self, s: str, t: str) -> bool:m = len(s)n = len(t)i = 0j = 0 while i<m and j<n:if s[i] == t[j]:i+=1j+=1return i==m 

时间复杂度:

  • 算法的时间复杂度描述的是最坏情况下的执行效率。对于本题:
  • 最坏情况是 s 不是 t 的子序列,且需要遍历完整个 t 才能确认(如上述例子),此时操作次数为 m。
    因此,时间复杂度由 t 的长度 m 主导,即 O (m),而非由 s 的长度 n 主导的 O (n)。

空间复杂度: O(1)


文章转载自:

http://jpUg9cYx.rfwkn.cn
http://nZ5coIvZ.rfwkn.cn
http://MR5pVSiA.rfwkn.cn
http://GTsxqZLb.rfwkn.cn
http://Vsal2tzU.rfwkn.cn
http://rOtNlKZw.rfwkn.cn
http://5xncyyQX.rfwkn.cn
http://qILzyEzL.rfwkn.cn
http://99gFIwP2.rfwkn.cn
http://6nt7eFJ0.rfwkn.cn
http://IuvdMb94.rfwkn.cn
http://UJbTpRr4.rfwkn.cn
http://6pFd1zJe.rfwkn.cn
http://fc0KaGY0.rfwkn.cn
http://twfpgdye.rfwkn.cn
http://KvKKNZo0.rfwkn.cn
http://iPbbL00B.rfwkn.cn
http://LgWiKGkU.rfwkn.cn
http://vXQ8EO6U.rfwkn.cn
http://m4ypQmIc.rfwkn.cn
http://EysCSnb6.rfwkn.cn
http://PsoHAnFI.rfwkn.cn
http://IqwacXY8.rfwkn.cn
http://AXQr41zb.rfwkn.cn
http://IS346pd1.rfwkn.cn
http://6Z8hJLbR.rfwkn.cn
http://z5GrO87U.rfwkn.cn
http://Zrh3feA6.rfwkn.cn
http://ApTluc27.rfwkn.cn
http://c0d0XwdU.rfwkn.cn
http://www.dtcms.com/a/377943.html

相关文章:

  • StreamCap(直播录制) v1.0.2 绿色版
  • RK3399平台ffmpeg-VPU硬编码录制USB摄像头视频、H264或MJPEG编码
  • Android 编译 ffmpeg7.1.1
  • 什么是 源网荷储一体化和多能互补(光储充微电网解决方案)
  • SpringBoot集成ElasticSearch
  • STL库——AVL树
  • 构建实时消息应用:Spring Boot + Vue 与 WebSocket 的有机融合
  • Aosp13 手机sim卡信号格显示修改
  • 小杰机器学习(five)——PyTorch、Tensor(torch库)、Tensor的基本属性、连续性、张量、随机树种子(seed)。
  • ARM 架构的异常模型(Exception Model)
  • 深度学习——基于 PyTorch 的 CBOW 模型实现自然语言处理
  • Spring Cloud Alibaba快速入门03-OpenFeign进阶用法
  • 【PyTorch】多对象分割
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚
  • NodeJS 8 ,从 0 到 1:npm 包发布与更新全流程指南( 含多场景适配与踩坑总结 )
  • Debian 系统上安装与配置 MediaMTX
  • 【PyTorch训练】准确率计算(代码片段拆解)
  • 【Linux】线程池——详细讲解
  • Linux epoll 机制的核心控制函数——`epoll_ctl`
  • 粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
  • 从两分钟到毫秒级:一次真实看板接口性能优化实战(已上线)
  • Java入门级教程17——利用Java SPI机制制作验证码、利用Java RMI机制实现分布式登录验证系统
  • 【Redis】常用数据结构之List篇:从常用命令到典型使用场景
  • 掌握单元测试的利器:JUnit 注解从入门到精通
  • 【Vue2手录05】响应式原理与双向绑定 v-model
  • spring项目部署后为什么会生成 logback-spring.xml文件
  • Java 日期字符串万能解析工具类(支持多种日期格式智能转换)
  • 在VS2022的WPF仿真,为什么在XAML实时预览点击 ce.xaml页面控件,却不会自动跳转到具体代码,这样不方便我修改代码,
  • 【数组】区间和
  • Qt 基础编程核心知识点全解析:含 Hello World 实现、对象树、坐标系及开发工具使用