0
点赞
收藏
分享

微信扫一扫

LeetCode-394. Decode String

一叶轻舟okok 2022-08-10 阅读 60


Given an encoded string, return its decoded string.

The encoding rule is: ​​k[encoded_string]​​, where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guaranteed to be a positive integer.

You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc.

Furthermore, you may assume that the original data does not contain any digits and that digits are only for those repeat numbers, k. For example, there won't be input like ​​3a​​​ or ​​2[4]​​.

Examples:

s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".

题解:

这题很像224和227题。

用一个栈保存前面所有字符结果和前一个数字大小。

题解:

class Solution {
public:
string decodeString(string s) {
int n = s.length();
string res = "";
stack<string> str;
int num = 0;
for (int i = 0; i < n; i++) {
if (s[i] >= '0' && s[i] <= '9') {
num *= 10;
num += s[i] - '0';
}
else if (s[i] == '[') {
str.push(res);
str.push(to_string(num));
num = 0;
res.clear();
}
else if (s[i] == ']') {
int k = stoi(str.top());
str.pop();
string tmp = str.top();
str.pop();
for (int j = 0; j < k; j++) {
tmp += res;
}
res = tmp;
}
else {
res += s[i];
}
}
return res;
}
};

 

举报

相关推荐

0 条评论