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;
}