(1) index i一定随着变化,所以函数定义一定是一个引用 &i;
(2) string s传入参数一定是一个引用 &s,这样才不会占用空间。
class Solution {
bool isNum(char c) {
if(c >='0' && c <= '9')
return true;
return false;
}
string ret;
public:
string decodeString(string s) {
ret = "";
int i=0;
return decodeString(s,i);
}
string decodeString(string &s, int &i) {
if(s.size() < 2)
return s;
int n = 0;
string str = "";
while(i<s.size() && s[i] != ']') {
if(isNum(s[i])) {
n = n*10 + s[i]-'0';
i++;
continue;
} else if(s[i] != '['){
str += s[i];
i++;
continue;
}
i++; //skip [
string tmp = decodeString(s,i);
i++; //skip ]
while(n) {
str += tmp;
n--;
}
}
return str;
}
};