LeetCode Question · Feb 2025

Max Score Brackets

SWE Phone Screen Easy
1 upvote 136 views

Question Details

I was asked this question in a phone interview recently. posting it here if it helps anyone :) Question: Given a string of "(" and ")" brackets.

return the maximum score where...

Full Details

I was asked this question in a phone interview recently. posting it here if it helps anyone :)

Question:
Given a string of "(" and ")" brackets.

return the maximum score where score is incremented based on indexes (j-i) each time you find a balanced pair.

My Intuition:
- calc maximum score by matching brackets furthest away
- the given brackets may be imbalanced, so it may be okay if all brackets are not used to calculate the score.
- the solution is straightforward if brackets are balanced. the tricky part is how to pick them when they are imbalanced.

Here is the solution I implemented (using 2-pointer approach).

Please let me know if there is any case I missed. Thanks!!

public class Solution {
 // time: O(n)
 // space: O(1)
 public static int maxScoreBrackets(String s) {
 int left = 0, right = s.length() - 1;
 int totalScore = 0;

 while (left < right) {
 // Move left pointer to the next \'(\'
 while (left < right && s.charAt(left) != \'(\') {
 left++;
 }
 // Move right pointer to the next \')\'
 while (left < right && s.charAt(right) != \')\') {
 right--;
 }
 // If valid pair found, add score and move pointers
 if (left < right) {
 totalScore += (right - left); // Add the score for this matched pair
 left++; // Move past the matched \'(\'
 right--; // Move past the matched \')\'
 }
 }

**return** totalScore;
 }

 public static void main(String[] args) {
 System.out.println("((())) , out: " + maxScoreBrackets("((()))") + ", expected: " + 9);
 System.out.println("((() , out: " + maxScoreBrackets("((()") + ", expected: " + 3);
 System.out.println("())) , out: " + maxScoreBrackets("()))") + ", expected: " + 3);
 System.out.println("()() , out: " + maxScoreBrackets("()()") + ", expected: " + 3);
 System.out.println("()()() , out: " + maxScoreBrackets("()()()") + ", expected: " + 6);
 System.out.println("(()()) , out: " + maxScoreBrackets("(()())") + ", expected: " + 8);
 System.out.println(")()() , out: " + maxScoreBrackets(")()()") + ", expected: " + 3);
 System.out.println("()()) , out: " + maxScoreBrackets("()())") + ", expected: " + 5 );
 System.out.println("(())) , out: " + maxScoreBrackets("(()))") + ", expected: 4"); // Extra closing bracket at the end
 System.out.println("((()) , out: " + maxScoreBrackets("((())") + ", expected: 4"); // Extra opening bracket at the start
 System.out.println("((( , out: " + maxScoreBrackets("(((") + ", expected: 0"); // Only opening brackets
 System.out.println("))) , out: " + maxScoreBrackets(")))") + ", expected: 0"); // Only closing brackets
 System.out.println("())( , out: " + maxScoreBrackets("())(") + ", expected: 2"); // Only one valid pair "()"
 System.out.println(")()( , out: " + maxScoreBrackets(")()(") + ", expected: 1"); // Ignore unmatched \')\'
 }

}\t

About This Question

This is a reported interview question from a intuit interview for a swe role during the phone screen round reported in 2025.

It covers the following topics: Strings .

Difficulty rating: Easy

Topics