题意:按照如下方式解码字符串
Input: s = "3[a]2[bc]"
Output: "aaabcbc"
Input: s = "3[a2[c]]"
Output: "accaccacc"
解题方法:使用递归的方法由里向外逐层解析,熟悉c++ string用法
#include<iostream>
#include<string>
using namespace std;
class Solution {
public:
string decodeString(string s) {
string result;
int num = 0;
for (int i=0; i < s.length(); i++) {
if (s[i] == '[') {
string local = recursion(s, ++i);
for (int j = 0; j < num; j++) {
result.append(local);
}
num = 0;
}
else if (s[i] >= 48 && s[i] <= 57) {
num = 10 * num + (s[i] - 48);
}
else {
result.push_back(s[i]);
}
}
return result;
}
string recursion(string s, int& i) {
string result;
int num= 0;
for (; i < s.length(); i++) {
if (s[i] == ']') {
return result;
}
else if (s[i] == '[') {
string local = recursion(s, ++i);
for (int j = 0; j < num; j++) {
result.append(local);
}
num = 0;
}
else if (s[i] >= 48 && s[i] <= 57) {
num = 10*num+(s[i] - 48);
}
else {
result.push_back(s[i]);
}
}
return result;
}
};