leetcode 394 字符串解码.

Posted 小师叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
}

以上是关于leetcode 394 字符串解码.的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode394.字符串解码

Leetcode394.字符串解码

leetcode 394.字符串解码 Java

leetcode——394. 字符串解码

LeetCode 394. 字符串解码

LeetCode 394. 字符串解码