1221. 分割平衡字符串

72 阅读1分钟

在一个 平衡字符串 中,'L' 和 'R' 字符的数量是相同的。

给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。

注意: 分割得到的每个字符串都必须是平衡字符串,且分割得到的平衡字符串是原平衡字符串的连续子串。

返回可以通过分割得到的平衡字符串的 最大数量 

示例 1:

输入: s = "RLRRLLRLRL"
输出: 4
解释: s 可以分割为 "RL""RRLL""RL""RL" ,每个子字符串中都包含相同数量的 'L''R'

示例 2:

输入: s = "RLLLLRRRLR"
输出: 3
解释: s 可以分割为 "RL""LLLRRR""LR" ,每个子字符串中都包含相同数量的 'L''R'

示例 3:

输入: s = "LLLLRRRR"
输出: 1
解释: s 只能保持原样 "LLLLRRRR".

示例 4:

输入: s = "RLRRRLLRLL"
输出: 2
解释: s 可以分割为 "RL""RRRLLRLL" ,每个子字符串中都包含相同数量的 'L''R'

题解:

/**
 * @param {string} s
 * @return {number}
 */
// 由于s为平衡字符串,所以利用count做计数器,遍历过程中当L和R数量相等
// count为0,可分割的平和字符串加1
var balancedStringSplit = function (s) {
    let count = 0, ans = 0
    for (let cur of s) {
        cur == 'L' ? count++ : count--
        if (count == 0) {
            ans++
        }
    }
    return ans
};