[leetcode]394. Decode String -- JavaScript 代码
使用了两个栈,一个保存字符串,一个保存重复次数。
/** * @param {string} s * @return {string} */
var decodeString = function(s) {
String.prototype.repeat = function(n){
var _this = this;
var result = '';
for(var i=0;i<n;i++) {
result += _this;
}
return result;
};
var len = s.length;
var stack = [];
var readytp = 1;
var strstack = [];
var count = 0;
var ret = "";
for(var i=0;i<len;i++){
var cur = s.charAt(i);
if(Number(cur) || Number(cur)===0){
if(readytp){
stack.push(0);
readytp = 0;
}
repeatnum = stack[stack.length-1];
repeatnum = repeatnum *10 + Number(cur);
stack[stack.length-1] = repeatnum;
//console.log(stack);
}else{
readytp = 1;
if(cur == "["){
count++;
strstack.push('');
continue;
}
if(cur == "]"){
count--;
var str = strstack.pop();
var num = stack.pop();
str = str.repeat(num);
count===0?ret += str:strstack[strstack.length-1]+=str;
continue;
}
count===0?ret+=cur:strstack[strstack.length-1] += cur;
}
}
return ret;
};
还没有评论,来说两句吧...