leetcode 1221. 分割平衡字符串

在一个「平衡字符串」中,‘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".

提示:

1 <= s.length <= 1000
s[i] = ‘L‘ 或 ‘R‘

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/split-a-string-in-balanced-strings

分析:

分割的最大数量, 就是将字符串s切割成一系列的子串,并且字串中R和L的数量要相等,

那问题来了怎莫切割,我们以示例1来看

示例 1:

输入:s = "RLRRLLRLRL"

从头开始

R 切割不了

RL 能切割,那到底切不切呢

继续向下看

RLRRLL也可以切割掉

RL 和RLRRLL选哪个呢

很明显题目要求字串数量大,那就肯定切割长度越小的字串越好,切RL,这道题的贪心大概就在这里吧,那么解题思路就很明显了

我们for循环遍历字串,

rcnt代表R的数量,lcnt代表L的数量,cnt代表结果

假使当前字符等于谁,谁的数量就加1,假使rcnt和lcnt刚好相等的时候,不正好就是字串R L数量相等且字串长度最小的时候嘛,那就让rcnt=0,lcnt=0,cnt+=1,最后的cnt就是答案了

上代码

class Solution {
    public int balancedStringSplit(String s) {
        int len = s.length();
        int rcnt=0, lcnt=0, cnt=0;
        for(int i=0; i<len; i++){
            if(s.charAt(i)==‘R‘)
                rcnt++;
            else
                lcnt++;

            if(rcnt==lcnt){
                cnt++;
                rcnt=0;
                lcnt=0;
            }
        }

        return cnt;
    }
}

原文地址:https://www.cnblogs.com/qiulonghai/p/12344606.html

时间: 2024-09-30 10:58:33

leetcode 1221. 分割平衡字符串的相关文章

1221. 分割平衡字符串

1221. 分割平衡字符串 描述: 在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的. 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串. 返回可以通过分割得到的平衡字符串的最大数量. 示例 1: 输入:s = "RLRRLLRLRL"输出:4解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L' 和 'R'.示例 2: 输入

PHP算法之分割平衡字符串

在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的. 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串. 返回可以通过分割得到的平衡字符串的最大数量. 示例 1: 输入:s = "RLRRLLRLRL"输出:4解释:s 可以分割为 "RL", "RRLL", "RL", "RL", 每个子字符串中都包含相同数量的 'L' 和 'R'.示例 2: 输入:s = "RLLLLRR

[leetcode 周赛 159] 1234 替换子串等到平衡字符串

1234 Replace the Substring for Balanced String 替换子串等到平衡字符串 问题描述 有一个只含有 'Q', 'W', 'E', 'R' 四种字符,且长度为 n 的字符串. 假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」. 给你一个这样的字符串 s,请通过「替换一个子串」的方式,使原字符串 s 变成一个「平衡字符串」. 你可以用和「待替换子串」长度相同的 任何 其他字符串来完成替换. 请返回待替换子串的最小可能长度. 如

Java将一段逗号分割的字符串转换成一个数组

String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以 可以共享.String 类包括的方法可用于检查序列的单个字符.比较字符串.搜索字符串.提取子字符串.创建字符串副本并将所有字符全部转换为大写或小写.Java 语言提供对字符串串联符号("+")以及将其他 对象转换为字符串的特殊支持.字符串串联是通过 StringBuilde

随笔 JS 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里

JS /* * 字符串 分割成字符串数组 并动态添加到指定ID的DOM 里 * @id 要插入到DOM元素的ID * * 输入值为图片URL 字符串 * */ function addImages(id){ /*字符串 变量*/ var images='{$content.pictureurl} ' ; /* console.log( images ) ;*/ /*字符串分割成字符串数组 split*/ var StringArray = images.split(','); /* consol

js怎样截取以&#39;-&#39;分割的字符串

在日期2019-09-01,怎样截取年只要月和日,下面是主要代码 var aa = '2019-09-01'; var bb = aa.split('-'); console.log(bb);//打印结果为:["2019", "09", "01"] var monthDay = bb[1]+'-'+bb[2]; console.log(monthDay)//打印结果为:09-01 实现以’/‘,或者’a‘字母,用类似的方法都能实现 js怎样截取以

leetcode题解之分解字符串域名

1.题目描述 A website domain like "discuss.leetcode.com" consists of various subdomains. At the top level, we have "com", at the next level, we have "leetcode.com", and at the lowest level, "discuss.leetcode.com". When w

LeetCode 131. 分割回文串(Palindrome Partitioning)

131. 分割回文串 131. Palindrome Partitioning 题目描述 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. LeetCode131. Palindrome Partitioning中等 示例: 输入: "aab" 输出: [ ??["aa","b"], ??["a","a","b"]] Java 实现 略

LeetCode:Word Pattern - 字符串模式匹配

1.题目名称 Word Pattern(字符串模式匹配) 2.题目地址 https://leetcode.com/problems/word-pattern/ 3.题目内容 英文:Given a pattern and a string str, find if str follows the same pattern. 中文:给出一组模式(pattern)和一个字符串(str),查看字符串是否与模式匹配 例如: pattern = "abba",str = "dog cat