>Description
一个字符串S,S是已经被加密过的字符串。现在要求把字符串S还原。字符串S可能会出现这样的格式:k(q),它表示字符串q重复了k次,其中q是0个或多个字符,而k是一个数字,范围是0至9。你只要把k(q)这样的格式全部展开,就能把S还原了,你要输出还原后的字符串的长度。
>Input
一行,一个字符串S。字符串S只由‘(’、‘)’、0至9的数字组成,长度不超过50。所有的括号都是能匹配的,不用判断。
>Output
一个整数,还原后的字符串的长度。答案不会超过2147483647。
>Sample Input
33(562(71(9)))
>Sample Output
19
>解题思路
递归算法:遇到一个括号,就把对应括号里面的内容递归,返回值为字符串长度。
如果当前字符不为括号,也不为括号前面的k,就直接在字符串长度上累加;
如果为括号,就找到对应右括号递推,字符串长度累加上k*返回的长度;
>代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
string s;
int lil(int l,int r) //l,r分别为起始位置,终止位置