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)
}
}