How to Split a String in Balanced Strings?

  • 时间:2020-09-18 17:26:09
  • 分类:网络文摘
  • 阅读:153 次

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 <= 1000
s[i] = ‘L’ or ‘R’

Hints:
Loop from left to right maintaining a balance variable when it gets an L increase it by one otherwise decrease it by one.
Whenever the balance variable reaches zero then we increase the answer by one.

Balancing Parentheses Algorithm

This is quite similar to the Parentheses algorithms that we can use a variable to keep tracking the balance i.e. when we meet a left Parentheses, we increment the balance or decrement it otherwise. If the balance becomes zero, we increment the split count.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
    int balancedStringSplit(string s) {
        int bal = 0, ans = 0;
        for (const auto &n: s) {
            if (n == 'L') {
                bal ++;
            } else {
                bal --;
            }
            if (bal == 0) {
                ans ++;
            }
        }
        return ans;
    }
};
class Solution {
public:
    int balancedStringSplit(string s) {
        int bal = 0, ans = 0;
        for (const auto &n: s) {
            if (n == 'L') {
                bal ++;
            } else {
                bal --;
            }
            if (bal == 0) {
                ans ++;
            }
        }
        return ans;
    }
};

O(N) time where N is the size of the input string. O(1) constant space is required.

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
维生素C的主要作用及人体推荐摄入量  补充维生素C的药品维生素C片服用禁忌  维生素C缺乏症的主要表现及其治疗  素食有哪些误区素食者需要注意的问题  素食的分类及适当素食具有的保健作用  冬季咳嗽吃什么自制美味止咳小零食  冬季进补鸡汤要注意 几类人不宜喝鸡汤  芦荟的保健价值、食用禁忌及食用方法  冬季食疗养生:吃南瓜可有效治疗哮喘  食疗:有效增强男人性能力的八款药膳 
评论列表
添加评论