Isaac Emmanuel
09 Sept 2026•EasyGo / Python / TypeScript

Split a String in Balanced Strings

Find the maximum number of balanced substrings containing equal counts of L and R.

Track a signed balance and close a substring whenever it returns to zero; taking every earliest closure maximizes the count.

Complexity

O(n) time and O(1) space.

Solution files

Go•split-a-string-in-balanced-strings/solution.go
package main

func balancedStringSplit(s string) int {
	balance, parts := 0, 0
	for _, character := range s {
		if character == 'L' {
			balance++
		} else {
			balance--
		}
		if balance == 0 {
			parts++
		}
	}
	return parts
}
Python•split-a-string-in-balanced-strings/solution.py
class Solution:
    def balancedStringSplit(self, s: str) -> int:
        balance = parts = 0
        for character in s:
            balance += 1 if character == "L" else -1
            if balance == 0: parts += 1
        return parts
TypeScript•split-a-string-in-balanced-strings/solution.ts
function balancedStringSplit(s: string): number {
  let balance = 0; let parts = 0;
  for (const character of s) { balance += character === "L" ? 1 : -1; if (balance === 0) parts += 1; }
  return parts;
}