递归很清晰~.
不过写不出来.
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; } }