leetcode 76 python

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shaoyou223/article/details/82691335
#给定一个字符串S和T,找出S中包含T所有字符的最小子串。
#S = “ADOBECODEBANC”,T = “ABC”,则满足题意的最小子串为“BANC”。当没有满足题意的子串时返回空字符串。
def get(S,T):
    t_length,s_length = len(T),len(S)
    min_length = 999
    new_s = ''
    for i in range(s_length-t_length):
        for j in range(i+t_length,s_length):
            new_string = S[i:j + 1]
            flag = check_B_if_in_A(new_string,T)
            if flag ==1 :
                min_length = min(min_length,len(new_string))
                new_s = new_string

    return min_length
def check_B_if_in_A(A,B):
    flag = 1 #表示在,否则则表示不在
    for _,char in enumerate(B):
        if char not in A:
            flag = 0
    return flag


S = 'ADOBECODEBANC'
T = 'ABC'
print(get(S,T))

代码采用的方法是采用双层循环的方法来得到新的字符串,在判定T是否在新的字符串中采用的办法是看T中是否每个元素都在新字符串中,是的话则求该字符串长度,然后和最短长度比较,否则执行下一个循环。

猜你喜欢

转载自blog.csdn.net/shaoyou223/article/details/82691335
76
今日推荐