所以思路就是,对于一个问题 X,先按并列关系划分为若干个子问题 X1, X2, …, Xn;如果 n 大于 1,那么各个子问题的答案串起来就是答案了;如果 n 等于 1,那么说明 X 最外层并不是并列关系而是嵌套关系或者根本就是单个字母,如果 X 是单个字母,那么答案就是它本身,反之,那么 X 一定是 s[Y] 的形式,答案就是 s 个 Y 的答案串起来。
defp_loc(input, left): count = 1 i = left while count > 0: i += 1 if input[i] == ']': count -= 1 elif input[i] == '[': count += 1 return i
defdo(input): if'['notin input: return input first = input.find('[') i = p_loc(input, first) if i < len(input) -1: parts = [] while i < len(input) -1: parts.append(input[:i+1]) input = input[i+1:] first = input.find('[') i = p_loc(input, first) parts.append(input[:i+1]) res = '' for part in parts: res += do(part) return res else: right = p_loc(input, first) sub_res = do(input[first+1:right]) return int(input[:first]) * sub_res