856. 括号的分数
给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:
() 得 1 分。
AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。
(A) 得 2 * A 分,其中 A 是平衡括号字符串。
示例 1:
输入: "()"
输出: 1示例 2:
输入: "(())"
输出: 2示例 3:
输入: "()()"
输出: 2示例 4:
输入: "(()(()))"
输出: 6
题解
解1
/**
* @param {string} S
* @return {number}
*/
var scoreOfParentheses = function(S) {
S = S.split('')
while (S.length > 1) {
let j = 0
while (j < S.length - 1) {
if (S[j] == '(' && S[j + 1] == ')') {
S[j] = 1
S.splice(j + 1, 1)
}
if (S[j] * 1 == S[j] && S[j + 1] * 1 == S[j + 1]) {
S[j] += S[j + 1]
S.splice(j + 1, 1)
}
if (S[j] == '(' && S[j + 1] * 1 == S[j + 1] && S[j + 2] == ')') {
S[j] = S[j + 1] * 2
S.splice(j + 1, 2)
}
j++
}
}
return S[0]
};
解2
/**
* @param {string} S
* @return {number}
*/
var scoreOfParentheses = function(S) {
return eval(S.replace(/\(\)/g,'+1').replace(/\(/g,'+2*('))
};