找字符串中最短的连续字符

2018-08-25  本文已影响0人  bboyAyao
设计一个函数,
输入: 一个字符串
输出: 一个整数
要求的是: 找出输入字符串中的一个最短的连续字符串, 使得这个字符串内包含所有字符至少一次.

注:方便观察结果,已用空格隔开
输入[1]: "ABCDE"
输出[1]: 5
输入[2]: "AB ABCDE"
输出[2]: 5
输入[3]: "ABA BCAAADE CCCCB"
输出[3]: 7

我的解法如下:

def find_str2(strA):
    str_len = len(strA)
    ele_num = len(set(strA))
    rel = str_len - ele_num
    count_num = str_len
    for j in range(rel+1):
        list1 = list(set(strA))
        list2 = []
        temp = 0
        for i in range(j,str_len):
            temp += 1
            if strA[i] in list1:
                list2.append(strA[i])
                list1.remove(strA[i])
                if not list1:
                    if temp < count_num:
                        end = i
                        start = end - temp + 1
                        strB = strA[start:end+1]
                        count_num = temp
                        break

    return count_num,strB
上一篇 下一篇

猜你喜欢

热点阅读