Skip to content

Latest commit

 

History

History

1221

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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".

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] = 'L' or 'R'

Related Topics:
String, Greedy

Solution 1.

// OJ: https://leetcode.com/problems/split-a-string-in-balanced-strings/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
    int balancedStringSplit(string s) {
        int cnt = 0, ans = 0;
        for (int i = 0; i < s.size(); ++i) {
            cnt += s[i] == 'L' ? 1 : -1;
            if (cnt == 0) ++ans;
        }
        return ans;
    }
};