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 score1
.AB
has scoreA + B
, whereA
andB
are balanced parentheses strings.(A)
has score2 * A
, whereA
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.
class Solution { public: int scoreOfParentheses(string s) { stack<int> st; int score = 0; for(int i = 0; i < s.size(); i++){ if(s[i] == '('){ st.push(score); score = 0; } else { score = st.top() + max(2 * score, 1); st.pop(); } } return score; } };
Storing all the opening parentheses in the datastructure and removing it while encountering the closing parentheses is a good choice.
As we focused on the last element and removing it, it would be LIFO concept. So, use Stack.
Reference:
https://leetcode.com/problems/score-of-parentheses/discuss/1856519/JavaC%2B%2B-Visually-Explained!!
Comments
Post a Comment