华为机试-字符串子序列(python解法)

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

你可以认为target和source 中仅包含英文小写字母,字符串source可能会很长,长度~=500,000,而target是个短字符串,长度<=100。

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

如,'abc’是’aebycd’的一个子序列,而’ayb’不是。

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

示例输入:

abc

abcaybec

示例输出:

3

因为aybec中的abc的a在整个字符串的位置索引是3

转自https://blog.csdn.net/MARS_098/article/details/117756659

target,source = input(),input()
i = len(target) - 1
j = len(source) - 1
index = 0
while i >= 0:      // 逆序逐字符遍历target
    index = 0
    while j >= 0:  // 逆序逐字符遍历source
        if target[i] == source[j]:
            index = j
            j -= 1
            break
        else:
            index = j
            j -= 1
            continue
    i -= 1
print(index)
全部评论
如果有个字符没找到呢?需要先判断是不是子序列吧
点赞
送花
回复
分享
发布于 2022-06-22 23:51
你这个没找到和找到了但最优解是index=0, 这两种的返回的 index都是0
点赞
送花
回复
分享
发布于 2023-03-03 14:55 上海
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 7 评论
分享
牛客网
牛客企业服务