0
点赞
收藏
分享

微信扫一扫

梅林固件启用自定义DDNS(以cloudflare为例)

钎探穗 2023-06-27 阅读 57

❓ 1221. 分割平衡字符串

难度:简单

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

给你一个平衡字符串 s,请你将它分割成尽可能多的子字符串,并满足:

  • 每个子字符串都是平衡字符串。

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

示例 1:

示例 2:

示例 3:

提示

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

💡思路:贪心

任意平衡字符串内的 RL 数量相等:

  • 定义 count 记录 R 的数量,当前字符是 R 就加1,否则减1;
  • count = 0 时,说明当前的 RL 数量相等,数量ans++

🍁代码:(Java、C++)

Java

class Solution {
    public int balancedStringSplit(String s) {
        int count = 0, ans = 0;
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) == 'R') count++;
            else count--;
            if(count == 0) ans++;
        }
        return ans;
    }
}

C++

class Solution {
public:
    int balancedStringSplit(string s) {
        int count = 0, ans = 0;
        for(char c : s){
            if(c == 'R') count++;
            else count--;
            if(count == 0) ans++;
        }
        return ans;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为字符串 s 的长度,我们仅需遍历 s 一次。
  • 空间复杂度 O ( 1 ) O(1) O(1),只需要常数的空间存放若干变量。

题目来源:力扣。

注: 如有不足,欢迎指正!

举报

相关推荐

0 条评论