给定字符串 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
- 两个字符串都只由小写字符组成。
题解:
/**
* @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)