1221. Split a String in Balanced Strings

Balanced strings are those that have an 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 split 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".

Example 4:

Input: s = "RLRRRLLRLL"
Output: 2
Explanation: s can be split into "RL", "RRRLLRLL", since each substring contains an equal number of 'L' and 'R'

 

Constraints:

  • 1 <= s.length <= 1000
  • s[i] is either 'L' or 'R'.
  • s is a balanced string.

Rust Solution

struct Solution;

impl Solution {
    fn balanced_string_split(s: String) -> i32 {
        let mut l = 0;
        let mut r = 0;
        let mut res = 0;
        for c in s.chars() {
            match c {
                'R' => r += 1,
                'L' => l += 1,
                _ => {}
            }
            if l == r {
                res += 1;
            }
        }
        res
    }
}

#[test]
fn test() {
    let s = "RLRRLLRLRL".to_string();
    assert_eq!(Solution::balanced_string_split(s), 4);
    let s = "RLLLLRRRLR".to_string();
    assert_eq!(Solution::balanced_string_split(s), 3);
    let s = "LLLLRRRR".to_string();
    assert_eq!(Solution::balanced_string_split(s), 1);
}

Having problems with this solution? Click here to submit an issue on github.