題目描述
給定兩個字符串 s和 t ,判斷 s是否為 t 的子序列。
你可以認為 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度n ~= 500,000),而 s 是個短字符串(長度 <=100)。字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,"ace"是"abcde"的一個子序列,而"aec"不是)。進階:時間復雜度O(n) ,空間復雜度O(n)輸入描述:
共兩行,第一行為字符串s, 第二行為字符串t
字符串t的長度 1<=n<=500000
字符串s的長度 1<=m<=100輸出描述:
輸出true或者是false,true表示是s是t的子序列,false表示s不是t的子序列示例1
輸入
abc
ahbgdc
輸出
true
示例2
輸入
axc
ahbgdc
輸出
false
代碼實現
# coding:utf-8class Solution:def isSubstring(self, l, s): # l為長字符串,s為短字符串ll = len(l)sl = len(s)if sl > ll:return Falseps, pl = 0, 0while ps < sl and pl < ll:if s[ps] == l[pl]:ps += 1pl += 1else:pl += 1return ps == slif __name__ == '__main__':l = input("LongString:")s = input("ShotString:")solution = Solution()print(solution.isSubstring(l, s))