zoukankan      html  css  js  c++  java
  • [LeetCode] 394. 字符串解码!!!!

    方法一:官方答案

    class Solution {
        int ptr;
    
        public String decodeString(String s) {
            LinkedList<String> stk = new LinkedList<String>();
            ptr = 0;
    
            while (ptr < s.length()) {
                char cur = s.charAt(ptr);
                if (Character.isDigit(cur)) {
                    // 获取一个数字并进栈
                    String digits = getDigits(s);
                    stk.addLast(digits);
                } else if (Character.isLetter(cur) || cur == '[') {
                    // 获取一个字母并进栈
                    stk.addLast(String.valueOf(s.charAt(ptr++))); 
                } else {
                    ++ptr;
                    LinkedList<String> sub = new LinkedList<String>();
                    while (!"[".equals(stk.peekLast())) {
                        sub.addLast(stk.removeLast());
                    }
                    Collections.reverse(sub);
                    // 左括号出栈
                    stk.removeLast();
                    // 此时栈顶为当前 sub 对应的字符串应该出现的次数
                    int repTime = Integer.parseInt(stk.removeLast());
                    StringBuffer t = new StringBuffer();
                    String o = getString(sub);
                    // 构造字符串
                    while (repTime-- > 0) {
                        t.append(o);
                    }
                    // 将构造好的字符串入栈
                    stk.addLast(t.toString());
                }
            }
    
            return getString(stk);
        }
    
        public String getDigits(String s) {
            StringBuffer ret = new StringBuffer();
            while (Character.isDigit(s.charAt(ptr))) {
                ret.append(s.charAt(ptr++));
            }
            return ret.toString();
        }
    
        public String getString(LinkedList<String> v) {
            StringBuffer ret = new StringBuffer();
            for (String s : v) {
                ret.append(s);
            }
            return ret.toString();
        }
    }

  • 相关阅读:
    无聊的时候,冷死了(三)
    素数测试算法(基于Miller-Rabin的MC算法) // Fermat素数测试法
    英语笔记
    大数乘法
    jsp的session完成登陆功能
    java中如何制定自定义异常
    jsp获取请求头信息
    JSP的taglib示例
    JSP的自定义标签
    java中路径中参数值是中文,打印到页面是乱码的解决方案
  • 原文地址:https://www.cnblogs.com/doyi111/p/12984385.html
Copyright © 2011-2022 走看看