392. 判断子序列

news/2024/11/24 21:29:02/

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

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

进阶:

如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?

致谢:

特别感谢 @pbrother 添加此问题并且创建所有测试用例。

示例 1:

输入:s = "abc", t = "ahbgdc"
输出:true
示例 2:

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

提示:

0 <= s.length <= 100
0 <= t.length <= 10^4
两个字符串都只由小写字符组成。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/is-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

双指针,依次遍历即可

代码如下:

class Solution {public boolean isSubsequence(String s, String t) {int left = 0;int right = 0;int sLength = s.length();int tLength = t.length();while (left < sLength && right < tLength) {char c1 = s.charAt(left);char c2 = t.charAt(right);if (c1 == c2) {left += 1;}right += 1;}return left==sLength;}
}

方法二:

使用函数返回s字符串当前字符在上一次标记的index之后是否出现,如果未出现直接返回false。

如果直至遍历结束字符串s都没有出现过index为-1的情况,那么满足子序列的要求,返回true。

public boolean isSubsequence(String s, String t) {int index = -1;for (char c : s.toCharArray()) {index = t.indexOf(c, index + 1);if (index == -1) {return false;}}return true;
}


http://www.ppmy.cn/news/47358.html

相关文章

三年创作,两年偷懒,一年划水

回顾 离我写第一篇文章开始&#xff0c;不知不觉已经三年了&#xff0c;回顾写作分享之路&#xff0c;可谓是坎坷崎岖&#xff0c;当然也正因为这一路的磨难让我收获不菲。 兜兜转转三年写了很多文章&#xff0c;回顾起我的写作起点&#xff0c;尤为艰难。刚刚开始写作时&…

【hello Linux】进程控制

目录 1. 进程创建 2. 进程终止 3. 进程常见的退出方法 4. 进程等待 5. 进程等待的方法 6. 获取子进程status Linux&#x1f337; 1. 进程创建 fork 函数初识 在 linux 中 fork 函数是非常重要的函数&#xff0c;它可以从已存在进程中创建一个新进程。 新进程便是我们所说的子进…

[API]IO文件流单字节读取块及读取(六)

IO&#xff1a; 可以让我们用标准的读写操作来完成对不同设备的读写数据工作。java将IO按照方向划分为输入与输出,参照点是我们写的程序 输入&#xff1a;用来读取数据的,是从外界到程序的方向,用于获取数据。输出&#xff1a;用来写出数据的,是从程序到外界的方向,用于发送数…

基于html+css的盒子展示8

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Metasploit高级技术【第九章】

预计更新第一章 Metasploit的使用和配置 1.1 安装和配置Metasploit 1.2 Metasploit的基础命令和选项 1.3 高级选项和配置 第二章 渗透测试的漏洞利用和攻击方法 1.1 渗透测试中常见的漏洞类型和利用方法 1.2 Metasploit的漏洞利用模块和选项 1.3 模块编写和自定义 第三章 Met…

( “树” 之 BFS) 513. 找树左下角的值 ——【Leetcode每日一题】

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二叉树的节点个数的范围是 […

C语言函数大全-- l 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- l 开头的函数 1. labs&#xff0c;llabs 1.1 函数说明 函数声明函数功能long labs(long n);计算长整型的绝对值long long int llabs(long long int n);计算long long int 类型整数的绝对值 1.2 演示示例 #include <stdio.h>…

prettier 命令行工具来格式化多个文件

prettier 命令行工具来格式化多个文件 你可以使用 prettier 命令行工具来格式化多个文件。以下是一个使用命令行批量格式化文件的示例&#xff1a; 安装 prettier 如果你还没有安装 prettier&#xff0c;你可以使用以下命令安装它&#xff1a; npm install -g prettier 进入…