题解 | #牛牛的字符串解码问题#

牛牛的字符串解码问题

https://www.nowcoder.com/practice/e5658311e6d44b74872e843ba13ee290

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return string字符串
     */
    public String decodeString (String s) {
        // write code here
        Stack<Integer> numStack = new Stack<>();
        Stack<StringBuilder> strStack = new Stack<>();
        StringBuilder currentStr = new StringBuilder();
        int currentNum = 0;

        for (char ch : s.toCharArray()) {
            if (Character.isDigit(ch)) {
                currentNum = currentNum * 10 + (ch - '0');
            } else if (ch == '[') {
                numStack.push(currentNum);
                currentNum = 0;
                strStack.push(currentStr);
                currentStr = new StringBuilder();
            } else if (ch == ']') {
                int k = numStack.pop();
                StringBuilder decodedStr = new StringBuilder();
                for (int i = 0; i < k; i++) {
                    decodedStr.append(currentStr);
                }
                currentStr = strStack.pop().append(decodedStr);
            } else {
                currentStr.append(ch);
            }
        }

        return currentStr.toString();
    }
}

这个代码使用两个栈,一个用于处理数字,另一个用于处理字符。通过遍历输入字符串,根据括号的出现,动态地构建解码后的字符串。这种递归和栈的方法可以处理嵌套的情况,确保正确解码。最终返回解码后的字符串。

全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务