2021-09-07

  1. 分割平衡字符串
    在一个 平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。给你一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串。返回可以通过分割得到的平衡字符串的 最大数量 。(提示:1 <= s.length <= 1000;s[i] = ‘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.设置变量num,用来记录字符串s中的’R’或者’L’的数量;设置变量max,用来记录通过分割得到的平衡字符串的最大数量;
2.首先遍历字符串s,若字符为’R’,则num++;若字符为’L’,则num–;
3.若num等于0,则说明此前出现的’R’和’L’数量相等,此时max++;
4.遍历完毕后,返回max;
注意事项:在java中,charAt(i) 函数:获取字符串中i位置的字符
s.charAt(i)的意思是第i个字符在字符串s中所占的位置,输出的是数字

具体代码如下:

class Solution {
    public int balancedStringSplit(String s) {
        int i;
        int num=0;
        int max=0;
        for(i=0;i<s.length();i++){
            if(s.charAt(i)=='R')
                num++;
            else if(s.charAt(i)=='L')
                num--;
            if(num == 0)
                max++;
        }
        return max;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值