392. 判断子序列 javascript
题目:
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
示例
输入:s = "abc", t = "ahbgdc"
输出:true
输入:s = "axc", t = "ahbgdc"
输出:false
代码1
- 遍历s,检测是否在t中存在
- 存在true,不存在false
var isSubsequence = function(s, t) {
// 遍历 判断是否在里面
var count = 0
for(var i of s){
if(t.indexOf(i) != -1)count +=1
}
if(count == s.length)return true
return false
};
但思路有误,未考虑到要保持相对位置
代码2
- 可以每次进行比对,然后保留未比对的部分
s = "abc", t = "ahbgdc"
s t
abc ahbgdc
bc hbgdc
c gdc
'' ''
true
var isSubsequence = function(s, t) {
if (s.length === 0) {
return true;
}
let index = t.indexOf(s[0]);
if (index == -1) {
return false;
}
s = s.slice(1)
t = t.slice(index + 1)
return isSubsequence(s, t)
};
学艺不精,还需努力💪