• leetcode 394 字符串解码.


    简介

    递归很清晰~.

    不过写不出来.

    code

    
    class Solution {
        String src;
        int ptr;
    
        public String decodeString(String s) {
            src = s;
            ptr = 0;
            return getString();
        }
    
        public String getString() {
            if (ptr == src.length() || src.charAt(ptr) == ']') {
                // String -> EPS
                return "";
            }
    
            char cur = src.charAt(ptr);
            int repTime = 1;
            String ret = "";
    
            if (Character.isDigit(cur)) {
                // String -> Digits [ String ] String
                // 解析 Digits
                repTime = getDigits(); 
                // 过滤左括号
                ++ptr;
                // 解析 String
                String str = getString(); 
                // 过滤右括号
                ++ptr;
                // 构造字符串
                while (repTime-- > 0) {
                    ret += str;
                }
            } else if (Character.isLetter(cur)) {
                // String -> Char String
                // 解析 Char
                ret = String.valueOf(src.charAt(ptr++)); //将一个字符转为string
            }
            
            return ret + getString();
        }
    
        public int getDigits() {
            int ret = 0;
            while (ptr < src.length() && Character.isDigit(src.charAt(ptr))) {
                ret = ret * 10 + src.charAt(ptr++) - '0';
            }
            return ret;
        }
    }
    
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    time模块
    Python进程模块
    Django面试题
    基本命令行语句
    scrapy中的配置与中间件
    JSON编码于解码对应dump于load
    python操作数据库
    Python里的方法
    正则表达式
    Python常用模块
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14878679.html
Copyright © 2020-2023  润新知