У нас есть строка 'AABCAA', если мы выполняем кодирование длины этой строки, мы получаем '2ABC2A'. длина составляет 6. У нас есть возможность удалить N последовательных символов из строки. мы должны найти сжатую строку длины строки с минимальной длиной
Необходимо найти всю подстроку, образованную удалением двух последовательных символов
'BCAA' --->BC2A --->4
'ACAA' --->AC2A --->4
'AAAA' --->4A --->2
'AABA' --->2ABA ---> 4
'AABC' --->2ABC ---> 4
, в этом ответе '4A'
Ниже это код, есть ли способ, которым мы можем достичь этого с меньшей сложностью времени и пространства ??????
'''
**def run_len_encoding_removing_n(s,n):
m=len(encoding(s))
s1=encoding(s)
for i in range(len(s)-n+1):
#l.append(s[:i] + s[i+n :])
print(s[:i] + s[i+n :])
r=encoding(s[:i] + s[i+n :])
if len(r)< m:
m=len(r)
s1=r
print(m)
print(s1)
def encoding(s):
encoded_message=""
i=0
while i < len(s):
cnt=1
j=i
while j < len(s)-1:
if s[j]==s[j+1]:
cnt=cnt+1
j=j+1
else:
break
encoded_message=encoded_message + str(cnt)+s[i]
i=j+1
return encoded_message
if __name__ == '__main__':
n = 2
s = 'AABCAA'
run_len_encoding_removing_n(s,n)**
'''