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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容