- 本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
非常感谢你阅读本文~
欢迎【👍点赞】【⭐收藏】【📝评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子 https://juejin.cn/user/2771185768884824/posts 博客原创~
在一个 平衡字符串 中,’L’ 和 ‘R’ 字符的数量是相同的。
给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。
注意:分割得到的每个字符串都必须是平衡字符串,且分割得到的平衡字符串是原平衡字符串的连续子串。
返回可以通过分割得到的平衡字符串的 最大数量 。
样例 1
1 | arduino复制代码输入: |
样例 2
1 | arduino复制代码输入: |
样例 3
1 | ini复制代码输入: |
样例 4
1 | arduino复制代码输入: |
提示
- 1 <= s.length <= 1000
- s[i] = ‘L’ 或 ‘R’
- s 是一个 平衡 字符串
分析
- 这道算法题如果说s本身不是平衡字符串就会有点难度。
- 由于s本身就是平衡字符串,所以从左到右可以使用贪心,越短则可以分的越多,而且剩下的字符串也是平衡字符串。
- 我们需要记录遍历过程中‘L’和‘R’的数量,如果相等就是一个平衡字符串。
- 分别记录‘L’和‘R’的数量需要2个变量,但是我们可以记录他们的差值,差为0就说明数量相等,也就是平衡字符串了,这样就只需要一个变量来做记录。
题解
java
1 | java复制代码class Solution { |
c
1 | c复制代码int balancedStringSplit(char * s){ |
c++
1 | cpp复制代码class Solution { |
python
1 | python复制代码class Solution: |
go
1 | go复制代码func balancedStringSplit(s string) int { |
rust
1 | rust复制代码impl Solution { |
原题传送门:https://leetcode-cn.com/problems/split-a-string-in-balanced-strings/
欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章
本文转载自: 掘金