https://leetcode.com/problems/decode-string/
var decodeString = function(s) {
let answer = "";
let stack = [];
for(let i = 0; i<s.length; i++){
if(s[i] === ']' && stack.length !==0){
let str ="";
let num = "";
let tmp = "";
while(stack[stack.length-1] !== '['){
tmp = stack.pop();
str = tmp + str;
console.log(str);
}
// [ 빼주기
stack.pop();
//2. 숫자 거르기
while(stack.length && !isNaN(stack[stack.length-1]) ){
num=stack.pop() + num;
}
//3 . 숫자와 문자 리핏
stack.push(str.repeat(parseInt(num)));
}
else{
stack.push(s[i]);
}
}
while(stack.length !==0){
answer =stack.pop() +answer;
}
return answer;
};
- 문자 reverse() 를 사용해서 뒤집어 줘야 하는건가 싶었지만 애초에 pop한 문자열과 기존에 뽑아 둔 문자열의 배치만 바꾸면 편하게 사용할 수 있었다
- 마지막에 ["aaa","bbb"] 이런식으로 repeat 해준 문자열들만 남아있어서 stack.pop()한 후에 answer 시키는 것으로 바꾸었더니 원하는 값이 나오고 해결