Строка

Строка

Sayavdera | 死亡

Ответ:

const decodeString = (s) => {
 const replace = (str) =>
  /\[+/.test(str)
   ? replace(
     str.replace(/(\d+)\[(\w+)\]/, (_, num, group) => group.repeat(num))
    ):str;
 return replace(s);
};

Объяснение:

Создаём рекурсивную функцию replace, которая проверяет, есть ли в переданной строке открывающая скобка [ . Если она есть,вызывает себя же, перед этим заменив в строке все группы с нулевой вложенностью. ( например, есть строка 3[a2[c]]] - в этой строке группа с нулевой вложенностью это 2[c].) Если скобок в строке нет, возвращает переданную строку.


Код для проверки:

const decodeString = (s) => {
 const replace = (str) =>
  /\[+/.test(str)
   ? replace(
     str.replace(/(\d+)\[(\w+)\]/, (_, num, group) => group.repeat(num))
    )
   : str;

 return replace(s);
};

console.log(decodeString('3[a]2[bc]')); // 'aaabcbc'

console.log(decodeString('3[a2[c]]')); // 'accaccacc'

console.log(decodeString('2[abc]3[cd]ef')); // 'abcabccdcdcdef'

console.log(decodeString('abc3[cd]xyz')); // 'abccdcdcdxyz'



Report Page