【JS每日一算法:剑指Offer系列】🟩156.判断子序列(双指针)

66 阅读1分钟

给定字符串 st ,判断 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
  • 两个字符串都只由小写字符组成。

题解:

个人博客

更多JS版本题解点击链接关注该仓库👀

/**
 * @description: 双指针  TC:O(n)  SC:O(1)
 * @author: JunLiangWang
 * @param {*} s 给定字符串s
 * @param {*} t 给定字符串t
 * @return {*}
 */
function doublePoint(s, t){
    /**
     * 我们初始化两个指针i和j,分别指向t和s的首个字符。
     * 如果t[i]==s[j]则匹配成功,i和j同时右移,比较下一
     * 个字符;如果t[i]!=s[j]则匹配失败,i右移,j不变,
     * 继续比较下一个字符。最终如果j移动到s的末尾,就说
     * 明s是t的子序列。
     */
    let i=0,j=0;
    while(i<t.length&&j<s.length)
    {
        if(t[i]==s[j])j++
        i++
    }
    return j==s.length
}

来源:力扣(LeetCode)