1221. Split a String in Balanced Strings

1221. Split a String in Balanced Strings

Easy

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'

计算一个字符串中有多少个合法的括号匹配。

括号匹配可以使用一个变量cnt进行统计,如果遇到左括号,cnt++;如果遇到右括号,cnt–;如果cnt==0说明是一个合法的括号匹配。

Java

class Solution {
    public int balancedStringSplit(String s) {
        char[] arr = s.toCharArray();
        int cnt = 0;
        int res = 0;
        for(char c: arr){
            if(c == 'L'){
                cnt += 1;
            }else{
                cnt -= 1;
            }
            if(cnt == 0){
                res += 1;
            }
        }
        return res;
    }
}

Python

class Solution:
    def balancedStringSplit(self, s: str) -> int:
        str_list = list(s)
        cnt = 0
        res = 0
        for s in str_list:
            cnt += 1 if s == 'L' else -1
            if cnt == 0:
                res += 1
        return res

你可能感兴趣的:(1221. Split a String in Balanced Strings)