--- ###### tags: `Leetcode` --- # Leetcode 1221. Split a String in Balanced Strings [link](https://leetcode.com/problems/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 into some number of substrings such that: Each substring is balanced. Return the maximum number of balanced strings you can obtain. #### 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 = "RLRRRLLRLL" Output: 2 Explanation: s can be split into "RL", "RRRLLRLL", each substring contains same number of 'L' and 'R'. Note that s cannot be split into "RL", "RR", "RL", "LR", "LL", because the 2nd and 5th substrings are not balanced. #### Example 3: Input: s = "LLLLRRRR" Output: 1 Explanation: s can be split into "LLLLRRRR". #### Constraints: - 2 <= s.length <= 1000 - s[i] is either 'L' or 'R'. - s is a balanced string. --- 題意: Split the string `s` into multiple substrings which are balanced strings as many as possible. --- The balanced string means the number of `'L'` and `'R'` have equal quantity so I think we could have `'l'` and `'r'` to store the quantity of both characters. If `'l'` and `'r'` are the same, we know we have 1 substring. Iterating the string `'s'` and then returning the numbers of substrings we count. #### Solution 1 ```python= class Solution: def balancedStringSplit(self, s: str) -> int: count = 0 l = r = 0 for c in s: if c == 'R': r += 1 else: l += 1 if l == r: count += 1 l = r = 0 return count ``` O(T): O(n) O(S): O(1)