題目描述:
思路:首先想到使用棧來存放資料,一個數字棧,一個字元棧。
1.當遇到數字的時候就統計數字(注意數字可能會超過一位數)
2.當遇到字元的時候就記錄下來
class Solution {
public:
string decodeString(string s) {
int num=0;//用于統計數字結果
for(char c:s){
if(isdigit(c))
num=num*10+(c-'0');
else if(isalpha(c)){
res+=c;
}else if(c=='['){
chars.push(res);
nums.push(num);
res="";
num=0;
}else{
string temp=res;//已經重複一次了
for(int i=0;i<nums.top()-1;i++)//在這裡少重複一次
res+=temp;
res=chars.top()+res;
chars.pop();
nums.pop();
}
}
return res;
}
private:
stack<string> chars;
stack<int> nums;
string res;
};