leetcode394.字符串解码

leetcode394.字符串解码_第1张图片

class Solution {
    public String decodeString(String s) {
        Stack kStack = new Stack<>();
        Stack stringBuilderStack = new Stack<>();

        StringBuilder currentStringBuilder = new StringBuilder();
        int k = 0;
        for (char ch : s.toCharArray()) {
            if (Character.isDigit(ch)) {
                k = k * 10 + ch - '0';
            } else if (ch == '[') {
                kStack.push(k);
                k = 0;
                stringBuilderStack.push(currentStringBuilder);
                currentStringBuilder = new StringBuilder();
            } else if (ch == ']') {
                StringBuilder decodeStringBuilder = stringBuilderStack.pop();
                int count = kStack.pop();
                while (count-- != 0) {
                    decodeStringBuilder.append(currentStringBuilder);
                }
                currentStringBuilder = decodeStringBuilder;
            } else {
                currentStringBuilder.append(ch);
            }
        }
        return currentStringBuilder.toString();
    }
}

 

你可能感兴趣的:(java,算法,leetcode,字符串,栈)