Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[LeetCode] 1221. Split a String in Balanced Strings #1221

Open
grandyang opened this issue May 30, 2019 · 0 comments
Open

[LeetCode] 1221. Split a String in Balanced Strings #1221

grandyang opened this issue May 30, 2019 · 0 comments

Comments

@grandyang
Copy link
Owner

grandyang commented May 30, 2019

Balanced strings are those that have an 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 split 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] is either 'L' or 'R'.
  • s is a balanced string.

这道题给了一个只有L和R两个字符的字符串,并且定义了一种平衡字符串,即L和R的个数相同,现在问最多能将字符串分为多少个这样的平衡字符串。博主看到这题以后第一反应就觉得这是一道验证合法括号个数的题目,就像之前的那道 Valid Parentheses,这里的L就可以看作是左括号,R可以看作是右括号,其实这道题比验证合法括号更简单一些,因为合法括号不仅仅需要左右括号个数相同,而且任何时候右括号的个数不能多于左括号,而这道题并没有这个限制。这里只需要一个 cnt 变量来记录L的个数,遇到L则 cnt 自增1,遇到R则 cnt 自减1。每次检测一下,若某个状态 cnt 为0了,则说明此时L和R个数相等了,结果 res 自增1即可,参见代码如下:

class Solution {
public:
    int balancedStringSplit(string s) {
        int res = 0, cnt = 0;
        for (char c : s) {
            (c == 'L') ? ++cnt : --cnt;
            if (cnt == 0) ++res;
        }
        return res;
    }
};

Github 同步地址:

#1221

类似题目:

Valid Parentheses

参考资料:

https://leetcode.com/problems/split-a-string-in-balanced-strings/

https://leetcode.com/problems/split-a-string-in-balanced-strings/discuss/403836/C%2B%2BJavaPython-Easy-Solution

LeetCode All in One 题目讲解汇总(持续更新中...)

@grandyang grandyang changed the title [LeetCode] 1221. Missing Problem [LeetCode] 1221. Split a String in Balanced Strings Oct 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant