09 Sept 2026Go / Python / TypeScriptEasy

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
  • Python split-a-string-in-balanced-strings/solution.py
  • TypeScript split-a-string-in-balanced-strings/solution.ts

Solution files

Gosplit-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
}
Pythonsplit-a-string-in-balanced-strings/solution.py
class Solution:
    def balancedStringSplit(self, s: str) -> int:
        balance = parts = class="syntax-number">0
        for character in s:
            balance += class="syntax-number">1 if character == class="syntax-string">"L" else -class="syntax-number">1
            if balance == class="syntax-number">0: parts += class="syntax-number">1
        return parts
TypeScriptsplit-a-string-in-balanced-strings/solution.ts
function balancedStringSplit(s: string): number {
  let balance = class="syntax-number">0; let parts = class="syntax-number">0;
  for (const character of s) { balance += character === class="syntax-string">"L" ? class="syntax-number">1 : -class="syntax-number">1; if (balance === class="syntax-number">0) parts += class="syntax-number">1; }
  return parts;
}