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 { |