力扣394.字符串解析 | 栈 | 字符串字符整数类型转换 | StringBuilder

题解

点击查看代码
class Solution {
    public String decodeString(String s) {
        Stack<String> stack = new Stack<>();
        for(char c : s.toCharArray()){
            String str = String.valueOf(c);//错误写法String(c);
            if(!str.equals("]")){//如果不是右括号就入栈
                stack.push(str);
            }
            else{//如果是右括号的话就出栈:需要判断是[ a 3三者其一
                StringBuilder temp = new StringBuilder();//用temp保存暂时的字符串。错误写法String temp = '';
                while(!stack.isEmpty() && !stack.peek().equals("[")){
                    temp.insert(0,stack.pop());
                }
                stack.pop();//移除栈顶的这个 [

                StringBuilder num = new StringBuilder();
                while(!stack.isEmpty() && Character.isDigit(stack.peek().charAt(0))){
                    num.insert(0,stack.pop());
                }

                //根据重复次数和重复字符串拼接此层字符串
                StringBuilder res = new StringBuilder();
                int cnt = num.length()>0 ? Integer.parseInt(num.toString()):1;
                while(cnt > 0){
                    res.append(temp); 
                    cnt--;
                }
                //把这个res字符串压入栈,继续下次循环
                stack.push(res.toString());
                }

        }
            StringBuilder res =new StringBuilder();
            while(!stack.isEmpty()){
                res.insert(0,stack.pop());
                }
        return res.toString();
        }

    }
####静态方法 和 实例方法

Integer.toString(int i)
Character.toString(char c)调用String.valueOf(char c)实现

Integer.valueOf(String s)调用Integer.parseInt(String s)实现,需要计算的话使用parseInt,需要对象的话使用valueOf。

StringBuilder拼接字符串

StringBuilder res =new StringBuilder();
常用于对于字符串的拼接而非直接加减字符串

posted @ 2025-08-28 16:08  柳成荫y  阅读(6)  评论(0)    收藏  举报