龙空技术网

python查找target字符串在source字符串中为子序列的最后索引

python案例 299

前言:

此时咱们对“正则python获取字符串后面的字母”可能比较关心,大家都想要分析一些“正则python获取字符串后面的字母”的相关资讯。那么小编同时在网上网罗了一些对于“正则python获取字符串后面的字母””的相关文章,希望看官们能喜欢,兄弟们快快来学习一下吧!

题目:

给定字符串target 和source,判断target是否为source的子序列,target和source中仅包含英文小写字母,字符串source可能会很长(长度 ~=500000),而target是一个短字符串,长度(<=100)。

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

请找出最后一个子序列的起始位置。

我们使用Python来实现这道题目:

def main(target, source):    target_letter_re = r'[a-z]{0,100}$'    source_letter_re = r'[a-z]{0,500000}$'    target_result = re.match(target_letter_re,target)    if not target_result:        print('target str is invalid!')        return False    source_result = re.match(source_letter_re,source)    if not source_result:        print('source str is invalid!')        return False    target_len = len(target) -1    source_len = len(source) -1    index_list = []    while target_len >=0:        index = 0        while source_len >=0:            if target[target_len] == source[source_len]:                index = source_len                index_list.append(index)                source_len -=1                break            else:                index = source_len                source_len -=1                continue        target_len -=1    if len(index_list) == len(target):        print(f"True,{index_list[-1]}")    else:        print("False")if __name__ == '__main__':    input_target = input("target:")    input_source = input("source:")    main(input_target,input_source)

标签: #正则python获取字符串后面的字母 #python获取字符串最后一位 #python获取字符串最后一位的值