題目描述:
解題思路一:雙指標從初始位置開始利用雙指標從前向後匹配,若匹配成功則右移慢指標,否則右移左指標。最終如果 i 移動到 s 的末尾,就說明 s 是 t 的子串行。
**實現
class
solution
:def
issubsequence
(self, s:
str, t:
str)
->
bool
: n, m =
len(s)
,len
(t) i = j =
0while i < n and j < m:
if s[i]
== t[j]
: i +=
1 j +=
1return i == n
解題思路二:動態規劃<**實現
class
solution
:def
issubsequence
(self, s:
str, t:
str)
->
bool
: n, m =
len(s)
,len
(t) f =[[
0]*26
for _ in
range
(m)]
[m]*26)
for i in
range
(m -1,
-1,-
1):for j in
range(26
):f[i]
[j]= i if
ord(t[i]
)== j +
ord(
'a')
else f[i +1]
[j]
add =
0for i in
range
(n):
if f[add]
[ord
(s[i])-
ord(
'a')
]== m:
return
false
add = f[add]
[ord
(s[i])-
ord(
'a')]+
1return
true
leetcode 392 判斷子串行
給定字串s和t,判斷s是否為t的子串行。你可以認為s和t中僅包含英文小寫字母。字串t可能會很長 長度 500,000 而s是個短字串 長度 100 字串的乙個子串行是原始字串刪除一些 也可以不刪除 字元而不改變剩餘字元相對位置形成的新字串。例如,ace 是 abcde 的乙個子串行,而 aec 不是...
leetcode 392 判斷子串行
給定字串 s 和 t 判斷 s 是否為 t 的子串行。你可以認為 s 和 t 中僅包含英文小寫字母。字串 t 可能會很長 長度 500,000 而 s 是個短字串 長度 100 字串的乙個子串行是原始字串刪除一些 也可以不刪除 字元而不改變剩餘字元相對位置形成的新字串。例如,ace 是 abcde ...
LeetCode 392 判斷子串行
題目描述 給定字串 s 和 t 判斷 s 是否為 t 的子串行。你可以認為 s 和 t 中僅包含英文小寫字母。字串 t 可能會很長 長度 500,000 而 s 是個短字串 長度 100 字串的乙個子串行是原始字串刪除一些 也可以不刪除 字元而不改變剩餘字元相對位置形成的新字串。例如,ace 是 a...