856ブラケットは得点
括弧の856得点を
タイトル説明では
、文字列のスコアは以下のルールで計算され、バランスの取れた括弧文字列Sを考えます:
- (1)点。
- A及びBは、バランスのとれた括弧文字列であることを特徴とする請求+ B AB点は、得られます。
- Aがバランス括弧文字列であり、(A)2つの* A点は、得られます。
LeetCode 括弧の856得点中等
例1:
入力:
"()"
出力: 1
出力: 1
例2:
入力:
"(())"
出力: 2
出力: 2
例3:
入力:
"()()"
出力: 2
出力: 2
例4:
入力:
"(()(()))"
出力: 6
出力: 6
ヒント:
- Sは、バランスのとれた括弧文字列であり、のみを含む(と)。
- 2 <= S.length <= 50
Java実装
import java.util.Stack;
class Solution {
public int scoreOfParentheses(String S) {
int cur = 0;
Stack<Integer> stack = new Stack<>();
for (char c : S.toCharArray()) {
if (c == '(') {
stack.push(cur);
cur = 0;
} else {
cur = stack.pop() + Math.max(cur * 2, 1);
}
}
return cur;
}
}
参考資料