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'

Source: leetcode | Difficulty: EASY
Tags: String algorithms

Mathematics

Greedy algorithms

Starter code: class Solution:
    def balancedStringSplit(self, s: str) -> int:
        

Solutions:
class Solution:

	def balancedStringSplit(self, s: str) -> int:
		lCount = rCount = 0
		retVal = 0
		for char in s:
			if char == 'R':
				rCount += 1
			else:
				lCount += 1
			if rCount == lCount:
				retVal += 1
				lCount = rCount = 0
		return retVal


class Solution:

	def balancedStringSplit(self, s: str) -> int:
		l_cnt = r_cnt = 0
		output = 0
		for i in range(len(s)):
			if s[i] == 'R':
				r_cnt += 1
			else:
				l_cnt += 1
			if l_cnt == r_cnt:
				output += 1
		return output


class Solution:

	def balancedStringSplit(self, s: str) -> int:
		r = 0
		l = 0
		result = 0
		for st in s:
			if st == 'R':
				r += 1
			else:
				l += 1
			if r > 0 and l > 0:
				if r == l:
					result += 1
					(r, l) = (0, 0)
		return result


class Solution:

	def balancedStringSplit(self, s: str) -> int:
		count1 = 0
		count2 = 0
		counter = 0
		for i in s:
			if i == 'R':
				count1 += 1
			else:
				count2 += 1
			if count1 == count2:
				counter += 1
		return counter


class Solution:

	def balancedStringSplit(self, s: str) -> int:
		(n, c) = (0, 0)
		for v in s:
			if v == 'R':
				n += 1
			else:
				n -= 1
			if n == 0:
				c += 1
		return c