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

【面试经典150题】【双指针】392. 判断子序列

题目链接

https://leetcode.cn/problems/is-subsequence/?envType=study-plan-v2&envId=top-interview-150

题解思路

  1. 首先如果s的长度大于t的长度,那么s肯定不是t的子序列
  2. 如果s的长度等于t的长度,那么s==t的情况下s才是t的子序列
  3. 如果s的长度小于t的长度,那么我们需要一个下标i来依次遍历字符串s中的字符,另一个下标j来依次便利t中的字符,对于s[i]我们需要找到一个s[j]和它相等,对于s[i + 1],我们需要找到t[j']s[i + 1]相等,其中j' > j,以此类推。简单来说,我们需要按顺序遍历字符串s,然后在字符串t中找到和s中的字符相等的字符,这样才能证明st的子序列。
    时间复杂度 O ( n + m ) O(n + m) O(n+m)
    空间复杂度 O ( 1 ) O(1) O(1)
    附上代码:
class Solution {
public:bool isSubsequence(string s, string t) {int n = s.length();int m = t.length();// s是t的子序列的前提条件是s的长度比t短if (n > m) {return false;}// n <= m// 时间复杂度O(n + m)int j = 0;for (int i = 0; i < n; ++i) {bool match = false;for (;j < m; ++j) {if (s[i] == t[j]) {match = true;++j;break;}}if (!match) {return false;}}return true;}
};
http://www.lryc.cn/news/373074.html

相关文章:

  • 禁用PS/Photoshop等一系列Adobe旗下软件联网外传用户数据操作
  • C语言猜输赢游戏
  • Rust 异步 trait 的实现困难
  • 腾讯云和windows11安装frp,实现内网穿透
  • Solidity智能合约事件(event)
  • 第2章 Rust初体验7/8:错误处理时不关心具体错误类型的下划线:提高代码可读性:猜骰子冷热游戏
  • 大话C语言:第24篇 预处理
  • React如何配置路由
  • MAC使用初体验+入门
  • Go TOKEN机制与跨域处理方式
  • JavaScript 的运行
  • 园区地图导航系统:技术原理、部署方案与智能化应用解析
  • 【数据结构】第十六弹---C语言实现希尔排序
  • 用Python向Word文档添加页眉和页脚
  • REST风格
  • Mongodb连接测试程序【Java版】
  • SM3国密算法:优秀的密码散列函数
  • 【安卓】在安卓中使用HTTP协议的最佳实践
  • Spring Boot集成antlr实现词法和语法分析
  • 多线程中run()和start()的区别
  • Nginx基础理论
  • 【QT5】<应用> 小游戏:贪吃蛇
  • 【Webpack】使用 Webpack 构建 Vue3+TS 项目
  • 数据防泄漏的六个步骤|数据防泄漏软件有哪些
  • SpringCloud 网关Gateway配置并使用
  • MySQl基础----Linux下搭建mysql软件及登录和基本使用(附实操图超简单一看就会)
  • PostgreSQL17优化器改进(4)允许UNION(没有ALL)使用MergeAppend
  • SSM 基于大数据技术的创业推荐系统-计算机毕业设计源码02979
  • 基于WPF技术的换热站智能监控系统03--实现左侧加载动画
  • 4D毫米波雷达技术及发展