1221. Split a String in Balanced Strings #
Problem #
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 <= 1000s[i] = 'L' or 'R'
Problem Summary #
In a “balanced string”, the number of ‘L’ and ‘R’ characters is the same. Given a balanced string s, split it into as many balanced strings as possible. Return the maximum number of balanced strings that can be obtained through splitting.
Note:
- 1 <= s.length <= 1000
- s[i] = ‘L’ or ‘R’
Solution Approach #
- Given a string, the requirement is to split this string into some substrings in which the number of R and L characters is equal. Ask how many substrings satisfying the condition it can be split into.
- This is an easy problem; just simulate according to the problem statement. Scan from left to right, add one when encountering
R, subtract one when encounteringL, and when the count is0, it is balanced, so split there.
Code #
package leetcode
func balancedStringSplit(s string) int {
count, res := 0, 0
for _, r := range s {
if r == 'R' {
count++
} else {
count--
}
if count == 0 {
res++
}
}
return res
}