Problem: 392. 判断子序列
思路
如图所示我们只要从t
中找到了对应的字母s[i]
,并且该字母在t
中的索引大于他前面的字母s[i-1]
在t
中的索引,就可以确定s[0..i]
是t
的子序列。
我们可以用下面方法
先查找第一个字母
s[0]
在t
中的索引,存入map中。从1开始遍历
s
。- 在t中找
t[map[s[i-1]]+1...end]
的子字符串中有没有s[i]
,map[s[i-1]+1]
就是s[i-1]
在t
中的索引的后面一个。 - 找到了则说明
s[0..i]
是t
的子序列- 记录
s[i]
在t
中的索引 因为我们是取出子序列查找的 所以要记得加上子串的开头的索引
- 记录
- 否则 直接 return false
- 在t中找
循环结束 说明
s[0...end]
是t
的子序列return false
Code
1 | class Solution { |