【刷题打卡】1221. 分割平衡字符串

76 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

1.描述

1221. 分割平衡字符串 - 力扣(LeetCode) (leetcode-cn.com)

在一个 平衡字符串 中,'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'

提示:

  • 1 <= s.length <= 1000
  • s[i] = 'L' 或 'R'
  • s 是一个 平衡 字符串

2.分析

遍历字符串之前定义一个{"R": 0, "L": 0}的字典,遍历时,根据当前拿到的字符在字典中键和当前字符相等的那个键值对的值进行加1操作,然后接着判断字典中的“R”和"L"字符对应的值是否相等,若相等,则计数(统计有多少个平衡字符串的变量)加1,并且把之前定义的字典中"R"和"L"键对应的值清零,字符串遍历完后返回计数。

3.AC代码

class Solution:
    def balancedStringSplit(self, s: str) -> int:
        s_dict = {"R": 0, "L": 0}
        count = 0
        for i in s:
            s_dict[i] += 1
            if s_dict["R"] == s_dict["L"]:
                count += 1
                s_dict = {"R": 0, "L": 0}
        return count

参考

Go执行用时 : 0 ms , 在所有 Go 提交中击败了 100.00% 的用户 内存消耗 : 1.9 MB , 在所有 Go 提交中击败了 70.00% 的用户 - 分割平衡字符串 - 力扣(LeetCode)