Given a balanced parentheses string s, return the score of the string.
The score of a balanced parentheses string is based on the following rule:
“()” has score 1.
AB has score A + B, where A and B are balanced parentheses strings.
(A) has score 2 * A, where A is a balanced parentheses string.
Example 1:
Input: s = “()”
Output: 1
Example 2:
Input: s = “(())”
Output: 2
Example 3:
Input: s = “()()”
Output: 2
Constraints:
- 2 <= s.length <= 50
- s consists of only ‘(’ and ‘)’.
- s is a balanced parentheses string.
- DFS 逐层乘以 2
- BFS 进行加和
- ()可以看做是’(’, ‘’, ‘)’, ''返回的是 0, 因为 0 * 2 == 0, 所以外层的括号要对内层的返回值进行判断, 如果返回的是 0, 则返回()本身的值, 即为 1
impl Solution {
fn rc(chars: &mut Vec<char>) -> i32 {
let mut sum = 0;
while !chars.is_empty() {
let c = chars.remove(0);
if c == '(' {
let next = Solution::rc(chars);
sum += if next == 0 { 1 } else { next * 2 };
} else {
return sum;
}
}
return sum;
}
pub fn score_of_parentheses(s: String) -> i32 {
let mut chars = s.chars().collect();
Solution::rc(&mut chars)
}
}
该博客讨论了一个算法问题,涉及计算由括号组成的平衡字符串的分数。算法使用深度优先搜索(DFS)和广度优先搜索(BFS)策略,根据给定的规则计算字符串的得分:'()' 得分为 1,AB 结构得分为 A + B,(A) 结构得分为 2 * A。示例展示了不同输入字符串的得分计算过程,所有输入字符串都是平衡的括号串。
1573

被折叠的 条评论
为什么被折叠?



