Skip to content

Latest commit

 

History

History
52 lines (44 loc) · 1019 Bytes

0856-括号的分数.md

File metadata and controls

52 lines (44 loc) · 1019 Bytes

给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:

() 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。  

示例 1:

输入: "()" 输出: 1 示例 2:

输入: "(())" 输出: 2 示例 3:

输入: "()()" 输出: 2 示例 4:

输入: "(()(()))" 输出: 6

var scoreOfParentheses = function(S) {
  const stack = []
  let i = 0
  while(i < S.length) {
    const cur = S[i]
    if (cur === ')') {
      let j = stack.length - 1
      let str = ''
      while(stack.length > 0) {
        const pop = stack.pop()
        if (pop === '(') {
          stack.push(str.length > 0 ? str.repeat(2) : '#')
          break;
        } else {
          str += pop
        }
      }
    } else {
      stack.push(cur)
    }
    i++
  }
  return stack.join('').length
};

解题思路: 也挺简单的,遇到()就对内部push一个#字符串,运用了0331题目的思维。