211021_leetcode_394.Decode string

7162 ワード

Decode string


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;
    };
  • 文字の反転()を使用して反転すべきだと思いますが、最初にポップアップされた文字列と既存の文字列の位置を変更すれば、
  • を便利に使用できます.
  • は最後に、このように繰り返される文字列スタックのみを残す.pop()を選択し、回答に変更し、希望する値を取得し、
  • を解決します.