LeetCode-394. Decode String

网友投稿 266 2022-08-29

LeetCode-394. Decode String

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 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; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从热点到价值,大赛年的体育营销不能忽视这三点!(体育营销的影响)
下一篇:Atom的使用体验
相关文章

 发表评论

暂时没有评论,来抢沙发吧~