X-leet-394-decode-string
2[abc]ggg -> abcabcggg
2[a3[bbb]] -> abbbabbbabbb
2[a]3[b] -> aabbbint recursive(string s, int printIdx, string& result) {
int lastIdx = 0;
int k = printIdx;
int t = printIdx;
string temp = "";
int iterSize;
//
// while (s[i] >= ' 0 ' && s[i] <= ' 9 ' ) {
// Cnt = cnt * 10 + s[i++] - ' 0 ' ;
// }
// iteration 숫자 찾기
// 숫자가 아니면 스트링 끝까지 || 숫자를 만나거나 ||
if(s[printIdx] < '0' || s[printIdx] > '9') {
int idx = printIdx;
while(true) {
if(idx >= s.length() || s[idx] > '9' || s[idx] < '0') {
return idx;
}
result += s[idx];
}
}
// 숫자면 ]일 때까지 찾고
while(true) {
if(s[t] == '[') {
break;
}
temp += s[t];
t += 1;
}
cout<<"temp"<<temp<<endl;
iterSize = stoi(temp);
for(int i = 0; i< iterSize; i++) {
k = printIdx + t - 1;
while(true) {
if(s[k] >= '0' && s[k] <= '9') {
} else if(s[k] == '[') {
lastIdx = recursive(s, k + 1, result);
k = lastIdx;
} else if(s[k] == ']' || k>= s.length()) {
break;
} else {
result += s[k];
// cout<<s[k];
}
k += 1;
}
}
if(k < lastIdx) {
return lastIdx;
}
return k;
}summary
Last updated
Was this helpful?