判断子序列Python解法

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/is-subsequence
 

例:

输入:s = "abc", t = "ahbgdc"
输出:true

解析:

将原字符串的字符一一与需要判断的字符串的字符进行比对即可。因为有顺序要求,所以很简单,只需要对长字符串进行遍历,让长字符的每一个字符一一与短字符串的字符进行比对,若比对成功,则短字符串和长字符串都进行下一个字符的判断,不成功则长字符串选出下一个字符进行比对。若全部比对完毕,短字符串的指针还没有指向最后则说明未全部匹配,返回False,反之返回True。

class Solution(object):
    def isSubsequence(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        ss = list(s)
        tt = list(t)
        i, j = 0, 0  # 两个字符串的指针
        for j in range(len(tt)):
            if i == len(ss):  # 提前判断完成
                return True
            if tt[j] == ss[i]:
                i += 1  # 每匹配上一个字符,指针后移一位继续匹配
            
        if i != len(ss):  # 不等说明没有全部匹配上
            return False
        else:
            return True

        
            

你可能感兴趣的:(Python,动态规划,算法,leetcode,python)