1221. Split a String in Balanced Strings

2019/10/30 Leetcode

1221. Split a String in Balanced Strings

Tags: ‘String’, ‘Greedy’

Balanced strings are those who have equal quantity of 'L' and 'R' characters.

Given a balanced string s split it in the maximum amount of balanced strings.

Return the maximum amount of splitted balanced strings.

 

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 = "RLLLLRRRLR"
Output: 3
Explanation: s can be split into "RL", "LLLRRR", "LR", each substring contains same number of 'L' and 'R'.

Example 3:

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

 

Constraints:

  • 1 <= s.length <= 1000
  • s[i] = 'L' or 'R'

Solution

public int balancedStringSplit(String s) {
    // Traverse from beginning, whenever we find a balanced substring, cut it off
    if (s == null || s.length() == 0) return 0;
    
    int countL = 0, countR = 0, i = 1, result = 0;
    if (s.charAt(0) == 'L') countL++;
    else countR++;
    while (i < s.length()) {
        if (s.charAt(i) == 'L') {
            countL++;
        } else {
            countR++; 
        }

        if (countL == countR) {
            result++;
        }
        
        i++;
    }
    return result;
}

Search

    Table of Contents