给定一个经过编码的字符串返回它解码后的字符串。编码规则为:k[encoded_string]表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的输入字符串中没有额外的空格且输入的方括号总是符合格式要求的。此外你可以认为原始数据不包含数字所有的数字只表示重复的次数k例如不会出现像3a或2[4]的输入。测试用例保证输出的长度不会超过105。示例 1输入s 3[a]2[bc]输出aaabcbc示例 2输入s 3[a2[c]]输出accaccacc示例 3输入s 2[abc]3[cd]ef输出abcabccdcdcdef示例 4输入s abc3[cd]xyz输出abccdcdcdxyz提示1 s.length 30s由小写英文字母、数字和方括号[]组成s保证是一个有效的输入。s中所有整数的取值范围为[1, 300]class Solution { public: string decodeString(string s) { string cur; int num0; stackstring strStack; stackint numStack; for(auto c:s) { if(isdigit(c)) { numnum*10(c-0); }else if(c[) { numStack.push(num); strStack.push(cur); num0; cur; }else if(c]) { int knumStack.top();numStack.pop(); string prevstrStack.top();strStack.pop(); string repeated; for(int i0;ik;i) { repeatedcur; } curprevrepeated; }else { curc; } } return cur; } };
LeetCode 394. 字符串解码
给定一个经过编码的字符串返回它解码后的字符串。编码规则为:k[encoded_string]表示其中方括号内部的encoded_string正好重复k次。注意k保证为正整数。你可以认为输入字符串总是有效的输入字符串中没有额外的空格且输入的方括号总是符合格式要求的。此外你可以认为原始数据不包含数字所有的数字只表示重复的次数k例如不会出现像3a或2[4]的输入。测试用例保证输出的长度不会超过105。示例 1输入s 3[a]2[bc]输出aaabcbc示例 2输入s 3[a2[c]]输出accaccacc示例 3输入s 2[abc]3[cd]ef输出abcabccdcdcdef示例 4输入s abc3[cd]xyz输出abccdcdcdxyz提示1 s.length 30s由小写英文字母、数字和方括号[]组成s保证是一个有效的输入。s中所有整数的取值范围为[1, 300]class Solution { public: string decodeString(string s) { string cur; int num0; stackstring strStack; stackint numStack; for(auto c:s) { if(isdigit(c)) { numnum*10(c-0); }else if(c[) { numStack.push(num); strStack.push(cur); num0; cur; }else if(c]) { int knumStack.top();numStack.pop(); string prevstrStack.top();strStack.pop(); string repeated; for(int i0;ik;i) { repeatedcur; } curprevrepeated; }else { curc; } } return cur; } };