211021_leetcode_394.Decode string

nais·2021년 10월 22일
0

Decode string

https://leetcode.com/problems/decode-string/

  • stack을 사용하여 문자를 입력된 문자에 포함된 숫자만큼 반복하여 stack에 저장
  • 마지막 남은 애들을 return 시켜준다 !
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 시키는 것으로 바꾸었더니 원하는 값이 나오고 해결
profile
왜가 디폴트값인 프론트엔드 개발자

0개의 댓글