给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)
解题思路:
首先使用set去重判断 s一定是t的真子集
其次利用双指针扫过长串,看子序列对应位置是否正确即可
class Solution:
def isSubsequence(self, s: str, t: str) -> bool:
if not ( set(s) <= set(t) ):
return False
len_s, len_t = len(s), len(t)
sIdx, tIdx = 0, 0
while sIdx < len_s and tIdx < len_t:
if s[sIdx] == t[tIdx]:
sIdx += 1
tIdx += 1
else:
tIdx += 1
if sIdx == len_s:
return True
else:
return False