█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 2191

Problema 0x59 - Substring más larga con máximo K caracteres diferentes

  • Autor: d4vsanchez
  • Fecha: 2020-11-28 22:18:27 UTC (Hace más de 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.031 s 3 KBi
#2
Correcto
0.026 s 3 KBi
#3
Correcto
0.027 s 3 KBi
#4
Correcto
0.027 s 3 KBi
#5
Correcto
0.028 s 3 KBi
#6
Correcto
0.022 s 3 KBi
#7
Correcto
0.032 s 3 KBi
#8
Correcto
0.021 s 3 KBi
#9
Correcto
0.023 s 3 KBi
#10
Correcto
0.101 s 3 KBi
#11
Correcto
0.352 s 3 KBi
#12
Correcto
0.106 s 3 KBi
#13
Correcto
0.162 s 3 KBi
#14
Correcto
0.112 s 3 KBi
#15
Correcto
0.106 s 3 KBi
#16
Correcto
0.172 s 3 KBi
#17
Correcto
0.145 s 3 KBi
#18
Correcto
0.152 s 3 KBi
#19
Correcto
0.118 s 3 KBi
#20
Correcto
0.164 s 3 KBi
#21
Correcto
0.151 s 3 KBi
#22
Correcto
0.166 s 3 KBi
#23
Correcto
0.105 s 3 KBi
#24
Correcto
0.138 s 3 KBi
Puntos totales: 100 / 100

Código

def max_substr(s, k):
    i = 0
    n = len(s)
    curr_max = 0
    letters = dict()

    for j in range(n):
        l = s[j]
        cl = letters.get(l, 0)
        letters[l] = cl + 1

        while len(letters.items()) > k:
            l = s[i]
            cl = letters.get(l, 1)
            letters[l] = cl - 1

            if letters[l] == 0:
                del letters[l]
            i = i + 1

        curr_max = max(curr_max, j - i + 1)

    return curr_max

s = input()
k = int(input())
print(max_substr(s,k ))