首页 > 学院 > 开发设计 > 正文

leetcode-394-Decode String

2019-11-06 06:25:02
字体:
来源:转载
供稿:网友

问题

题目:[leetcode-394]

思路

小心非单个数字的情形。

代码

#include <iostream>#include <string>#include <sstream>#include <stack>using namespace std;class Solution {public: string decodeString(string s) { int sz = s.size(); std::string ret; if(!sz) return ret; std::stack<int> times; std::stack<std::string> stk; std::string val; for(int i = 0; i < sz; ++i){ if(isdigit(s[i])) val += s[i]; else{ if( val != "" ){ times.push( string_to_int(val) ); val = ""; } if(stk.empty()) stk.push( std::string(1, s[i]) ); else{ if( s[i] != ']' ) stk.push( std::string(1, s[i]) ); else{ std::string tmp; while(stk.top() != "["){ tmp = stk.top() + tmp; stk.pop(); } stk.pop(); std::string cur; int cnt = times.top(); times.pop(); for(int i = 0; i < cnt; ++i){ cur += tmp; } stk.push(cur); } } } } while(!stk.empty()){ ret = stk.top() + ret; stk.pop(); } return ret; }PRivate: int string_to_int(std::string& s){ std::stringstream ss; ss << s; int val; ss >> val; return val; }};int main( void ){ std::string str = "3[a2[c]]"; Solution s; s.decodeString(str); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表