인코딩된 문자열이 주어지며 디코딩된 문자열을 반환하는 함수를 통해 처리해야 합니다.
인코딩 규칙은 -
n[encodedString], where the encodedString inside the square brackets is being repeated exactly n times.
그리고 n은 양의 정수로 보장됩니다.
입력 문자열이 항상 유효하다고 가정할 수 있습니다. 여백이 없고, 대괄호가 잘 구성되어 있습니다.
예를 들어 - 입력이 -
인 경우const str = "3[a]2[bc]";
그러면 출력은 다음과 같아야 합니다. -
const output: "aaabcbc";
예시
이에 대한 코드는 -
const str = "3[a]2[bc]"; const helper = (str = '') => { return str.replace(/(\d+\[\w+\])/gi, item => { let match = /(\d+)\[(\w+)\]/.exec(item); let repeat = parseInt(match[1]); let pattern = match[2]; let result = ""; while(repeat−− > 0) { result += pattern; } return result; }); }; const decodeString = function(str) { while(/\d+\[\w+\]/gi.test(str)) { str = helper(str); } return str; }; console.log(decodeString(str));
출력
콘솔의 출력은 -
aaabcbc