[leetcode]394. Decode String -- JavaScript 代码

雨点打透心脏的1/2处 2022-09-25 12:17 71阅读 0赞

使用了两个栈,一个保存字符串,一个保存重复次数。

  1. /** * @param {string} s * @return {string} */
  2. var decodeString = function(s) {
  3. String.prototype.repeat = function(n){
  4. var _this = this;
  5. var result = '';
  6. for(var i=0;i<n;i++) {
  7. result += _this;
  8. }
  9. return result;
  10. };
  11. var len = s.length;
  12. var stack = [];
  13. var readytp = 1;
  14. var strstack = [];
  15. var count = 0;
  16. var ret = "";
  17. for(var i=0;i<len;i++){
  18. var cur = s.charAt(i);
  19. if(Number(cur) || Number(cur)===0){
  20. if(readytp){
  21. stack.push(0);
  22. readytp = 0;
  23. }
  24. repeatnum = stack[stack.length-1];
  25. repeatnum = repeatnum *10 + Number(cur);
  26. stack[stack.length-1] = repeatnum;
  27. //console.log(stack);
  28. }else{
  29. readytp = 1;
  30. if(cur == "["){
  31. count++;
  32. strstack.push('');
  33. continue;
  34. }
  35. if(cur == "]"){
  36. count--;
  37. var str = strstack.pop();
  38. var num = stack.pop();
  39. str = str.repeat(num);
  40. count===0?ret += str:strstack[strstack.length-1]+=str;
  41. continue;
  42. }
  43. count===0?ret+=cur:strstack[strstack.length-1] += cur;
  44. }
  45. }
  46. return ret;
  47. };

发表评论

表情:
评论列表 (有 0 条评论,71人围观)

还没有评论,来说两句吧...

相关阅读