当前位置: 面试刷题>> 括号得分 (经典算法题500道)


### 题目描述补充 **题目:括号得分** 给定一个包含圆括号、方括号和花括号的字符串,要求计算该字符串的得分。规则如下: - 每个左括号(`(`、`[`、`{`)与其对应的右括号(`)`、`]`、`}`)配对成功,则得1分。 - 如果一个左括号找不到对应的右括号,或者一个右括号找不到对应的左括号,则视为无效括号,不计入得分。 - 字符串中还可能包含其他非括号字符,这些字符应被忽略。 **示例**: - 输入:"(())",输出:2 - 输入:"()[]{}",输出:3 - 输入:"(]", 输出:0(因为括号不匹配) - 输入:"{[]}", 输出:2 ### PHP 示例代码 ```php function calculateScore($s) { $stack = []; $score = 0; $mapping = [')' => '(', ']' => '[', '}' => '{']; for ($i = 0; $i < strlen($s); $i++) { $char = $s[$i]; if (in_array($char, ['(', '[', '{'])) { array_push($stack, $char); } elseif (isset($mapping[$char]) && end($stack) === $mapping[$char]) { array_pop($stack); $score++; } } return $score; } // 测试 echo calculateScore("(())") . "\n"; // 输出 2 echo calculateScore("()[]{}") . "\n"; // 输出 3 echo calculateScore("(]") . "\n"; // 输出 0 echo calculateScore("{[]}") . "\n"; // 输出 2 ``` ### Python 示例代码 ```python def calculateScore(s): stack = [] score = 0 mapping = {')': '(', ']': '[', '}': '{'} for char in s: if char in ['(', '[', '{']: stack.append(char) elif char in mapping and stack and stack[-1] == mapping[char]: stack.pop() score += 1 return score # 测试 print(calculateScore("(())")) # 输出 2 print(calculateScore("()[]{}")) # 输出 3 print(calculateScore("(]")) # 输出 0 print(calculateScore("{[]}")) # 输出 2 ``` ### JavaScript 示例代码 ```javascript function calculateScore(s) { let stack = []; let score = 0; const mapping = {')': '(', ']': '[', '}': '{'}; for (let char of s) { if (['(', '[', '{'].includes(char)) { stack.push(char); } else if (mapping[char] && stack[stack.length - 1] === mapping[char]) { stack.pop(); score++; } } return score; } // 测试 console.log(calculateScore("(())")); // 输出 2 console.log(calculateScore("()[]{}")); // 输出 3 console.log(calculateScore("(]")); // 输出 0 console.log(calculateScore("{[]}")); // 输出 2 ``` **码小课**网站中有更多关于算法和数据结构的内容分享给大家学习,欢迎访问并深入探索。
推荐面试题