https://programmers.co.kr/learn/courses/30/lessons/17684
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def solution(msg):
dic = {chr(k): k-ord('A')+1 for k in range(ord('A'), ord('Z')+1)}
answer = []
i = 0
while True:
if i == len(msg):
break
for l in range(1, len(msg)-i+1):
ss = msg[i:i+l]
if ss in dic:
ss_known = ss
else:
dic[ss] = len(dic) + 1
answer.append(dic[ss_known])
i = i+l-1
break
else:
answer.append(dic[ss_known])
break
return answer
Complexity
$O(|\text{msg}|^2)$
PREVIOUSEtc