Найти тему
2015 подписчиков

📌 Задача расшифровка строки


Сложность: Средняя

Условие задачи: дана строка в формате: k[encoded_string], где k - число повторений зашифрованной строки. Необходимо вывести результирующую строку, которая соответствует расшифровке исходной строки.

Пример:

Ввод: s = "3[a]2[bc]"
Вывод: "aaabcbc"

Ввод: s = "3[a2[c]]"
Вывод: "accaccacc"

Решение:

func decodeString(s string) string {
_,answer := decode(s,0)
return strings.Join(answer, "")
}

func decode(s string,i int) (int,[]string){
num := 0
st := []string{}
for i < len(s){
char := string(s[i])
if val, err := strconv.Atoi(char); err == nil {
num = num*10+val
}else if char == "["{
k,l := decode(s,i+1)
for j:=0;j<num;j++{
st = append(st,l...)
}
i = k
num = 0
}else if char == "]"{
return i, st
}else{
st = append(st,char)
}
i+=1
}
return i,st
}

Пишите свое решение в комментариях👇

Около минуты