LeetCode-Decode String

題目描述

思路

使用棧的思想對字符進行處理java

主要難點在於處理重複中括弧中的字母的次數,作法就在於將取出的字符,按照後面的數字的次數從新入棧幾回,就能夠達到重複括弧內的字母的目的。git

代碼實現

class Solution {
    public String decodeString(String s) {
        
        Stack<Character> stack = new Stack();
        
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) != ']'){
                stack.push(s.charAt(i));
            }else{
// 取出字符
                StringBuilder sb = new StringBuilder();
                while(!stack.isEmpty() && Character.isLetter((char)stack.peek()))
                    sb.insert(0, (char)stack.pop());
// 將‘[’出棧出掉
                stack.pop();
// 取出數字
                StringBuilder sbn = new StringBuilder();
                while(!stack.isEmpty() && Character.isDigit((char)stack.peek()))
                    sbn.insert(0, (char)stack.pop());
                
                int count = Integer.valueOf(sbn.toString());
// 將取出的字母根據數字的次數從新入棧sbn次
                while(count != 0){
                    
                    for(char a: sb.toString().toCharArray())
                        stack.push(a);
                    count--;
                }
            }
        }
        StringBuilder result = new StringBuilder();
        while(!stack.isEmpty()){
            result.insert(0, stack.pop());
        }
        return result.toString();
        
    }
}

複製代碼
相關文章
相關標籤/搜索