1 minute read

Balanced strings are those that have an equal quantity of ‘L’ and ‘R’ characters.

Given a balanced string s, split it into some number of substrings such that:

Each substring is balanced. Return the maximum number of balanced strings you can obtain.

Example 1:

Input: s = “RLRRLLRLRL” Output: 4 Explanation: s can be split into “RL”, “RRLL”, “RL”, “RL”, each substring contains same number of ‘L’ and ‘R’. Example 2:

Input: s = “RLRRRLLRLL” Output: 2 Explanation: s can be split into “RL”, “RRRLLRLL”, each substring contains same number of ‘L’ and ‘R’. Note that s cannot be split into “RL”, “RR”, “RL”, “LR”, “LL”, because the 2nd and 5th substrings are not balanced. Example 3:

Input: s = “LLLLRRRR” Output: 1 Explanation: s can be split into “LLLLRRRR”.

Constraints:

2 <= s.length <= 1000 s[i] is either ‘L’ or ‘R’. s is a balanced string.

/**
 * @param {string} s
 * @return {number}
 */
var balancedStringSplit = function(s) {
    let balance = 0, matches = 0;

    for(let i = 0; i < s.length; i++){
      if (s[i] === "R") {
			balance -= 1;
		} else if (s[i] === "L") {
			balance += 1;
		}

		if (balance === 0) {
			matches += 1;
		}
    }
    return matches
};

The given JavaScript function, balancedStringSplit, takes a string s as input and aims to find the maximum number of balanced substrings within it. It initializes two variables, balance and matches, to keep track of the balance of ‘R’ and ‘L’ characters encountered in the string. It then iterates through each character in the string, decrementing balance for ‘R’ and incrementing it for ‘L’. Whenever balance reaches zero, it means that a balanced substring is found, so matches is incremented. Finally, the function returns the matches count, representing the maximum number of balanced substrings in the input string s.

Leave a comment