版权声明:本文为博主原创文章,未经博主允许不得转载。 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中是否每个元素都在新字符串中,是的话则求该字符串长度,然后和最短长度比较,否则执行下一个循环。