声明:只求用最简单的方法通过,不求优化,不喜勿喷
- 用js投机取巧做的
- 观察规律可得,先初始化一个空字符串
- 如果出现 (( 这样的结构,这是一个乘法的开始,内部的内容是乘法包含的范围,为字符串增加( 来限制范围
- 然后如果出现()的符号,那么它就是1,字符串增加1
- 如果出现 )( 这样的符号,说明是两个块的连接处,这两个块是相加关系,增加 + 符号
- 如果出现 )) 符号,说明是乘法的结束,增加 )*2 符号来闭合乘法
- 处理完毕后,整个括号表达式变成了一个运算的字符串
- 使用eval函数算出结果
- 如果其他语言需要想办法计算这个表达式,可以用栈等方案,等等要打周赛就不写了
- 优化todo
/**
* @param {string} s
* @return {number}
*/
var scoreOfParentheses = function (s) {
let stack = ""
for (var i = 0; i < s.length; i++) {
if (s[i] == ')' && s[i + 1] == ')') {
stack = stack + ")*2"
} else if (s[i] == '(' && s[i + 1] == '(') {
stack = stack+"("
} else if (s[i] == '(' && s[i + 1] == ')') {
stack += "1"
} else if (s[i] == ')' && s[i + 1] == '(') {
stack += "+"
}
}
console.log(stack)
let sum = eval(stack);
return sum;
};