题目

https://leetcode-cn.com/problems/decode-string/

解题

  1. /**
  2. * @param {string} s
  3. * @return {string}
  4. */
  5. var decodeString = function(s) {
  6. let multi = 0
  7. let res = ''
  8. const stack = []
  9. for (let c of s) {
  10. if (c === '[') {
  11. stack.push([multi, res])
  12. res = '', multi = 0
  13. } else if (c === ']') {
  14. const pop = stack.pop()
  15. const cur_mult = pop[0]
  16. const last_res = pop[1]
  17. // 之前结果 //
  18. res = last_res + new Array(cur_mult).fill(res).join('')
  19. } else if (c >= '0' && c <= '9') {
  20. multi = multi * 10 + Number(c)
  21. } else {
  22. // 记录重复单元
  23. res += c
  24. }
  25. }
  26. return res
  27. };