《剑指offer》面试题15:字符串中的所有变位词

"""
题目: 输入字符串S1和S2,如何找出字符串S1的所有变位词在字符串S2中的歧视下标?
解答思路: 这个题就是“字符串中的变位词”的轻微变种,无非就是在判断出是变为词后,把它的位置记录下来就行了。
"""


def has_brother(s1, s2):
    s1_length = len(s1)
    max_k = len(s2) - s1_length + 1
    # location_list记录变位词的起始位置
    location_list = []
    for k in range(max_k):
        s1_copy_list = list(s1)
        p1 = k
        p2 = p1 + s1_length
        sub_string = s2[p1:p2]
        for s in sub_string:
            if s in s1_copy_list:
                s1_copy_list.remove(s)
        if len(s1_copy_list) == 0:
            location_list.append(p1)
    if len(location_list) > 0:
        print('find them, and their location is ', location_list)
    else:
        print('not find them !')


s1 = 'pots'
s2 = 'stopsssss'
s3 = 'sdsastop'
s4 = 'sdsstopsdd'
s5 = 'sdsdstwop'
has_brother(s1, s2)
has_brother(s1, s3)
has_brother(s1, s4)
has_brother(s1, s5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值