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();
        
    }
}

复制代码
相关文章
相关标签/搜索