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

牛牛的字符串解码问题

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

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 16:15
我应届生,去年10月份开始在这家公司实习,到今年10月份正好一年想(实习+试用期),在想要不要提前9月份就离职,这样好找工作些,但又差一个月满一年,又怕10月份国庆回来离职,容易错过了下半年的金九银十,到年底容易gap到年后
小破站_程序员YT:说这家公司不好吧,你干了快一年 说这家公司好吧,你刚毕业就想跑路说你不懂行情吧,你怕错过金九银十说 你懂行情吧,校招阶段在实习,毕业社招想换工作 哥们,我该怎么劝你留下来呢
应届生,你找到工作了吗
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务