当前位置: 首页 > 后端技术 > Python

力扣-0392.IsSubsequence判断子序列【Python】

时间:2023-03-25 22:47:28 Python

LeetCode0392.IsSubsequence判断子序列【Easy】【Python】【双指针】问题LeetCode给定一个字符串s和一个字符串t,检查s是否是t的子序列。你可以假设s和t都只有小写英文字母。t可能是一个很长(长度~=500,000)的字符串,而s是一个短字符串(<=100)。字符串的子序列是一个新字符串,它是通过删除一些(可以没有)从原始字符串形成的的字符而不打扰其余字符的相对位置。(即,“ace”是“abcde”的子序列,而“aec”不是)。示例1:s=“abc”,t=“ahbgdc”返回true。示例2:s=“axc”,t=“ahbgdc”返回false。跟进:如果有很多传入的S,比如S1,S2,...,Sk,其中k>=1B,你想一一检查T是否有它的子序列。在这种情况下,您将如何更改您的代码?鸣谢:特别感谢@pbrother添加此问题nd创建所有测试用例。题目给定一个字符串s和t,判断s是否是t的子序列。你可以认为s和t只包含英文小写字母。字符串t可能很长(长度~=500,000),而s很短(长度<=100)。字符串的子序列是在不改变剩余字符的相对位置的情况下,从原始字符串中删除(或不删除)某些字符而形成的新字符串。(例如,“ace”是“abcde”的子序列,但“aec”不是)。示例1:s="abc",t="ahbgdc"返回true。示例2:s="axc",t="ahbgdc"返回false。后续挑战:如果有大量输入S,称为S1,S2,...,Sk,其中k>=10亿,则需要依次检查它们是否是T的子序列。在这种情况下,您将如何更改代码?致谢:特别感谢@pbrother添加此问题并创建所有测试用例。思路是双指针i指针作为s的索引,j指针作为t的索引。每次j向右移动,如果s[i]==t[j],则i向右移动。时间复杂度:O(min(len(s),len(t)))空间复杂度:O(1)PythoncodeclassSolution(object):defisSubsequence(self,s,t):""":types:str:typet:str:rtype:bool"""i,j=0,0whilei