zoukankan      html  css  js  c++  java
  • 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".

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/split-a-string-in-balanced-strings
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    该题借鉴了大佬的思路,可以用数模拟栈的实现

     遍历该字符串,当出现R时,stack就++;当出现L时,stack--

    这样,当stack==0的时候,就说明该子串是平衡的。故可以用变量n记录平衡子串的个数; n++

    具体代码如下:

    class Solution {
        public int balancedStringSplit(String s) {
            int n=0;
            int stack = 0;
            for(char c:s.toCharArray()){
                if(c=='R'){
                    stack++;
                }else{
                    stack--;
                }
                if(stack==0){
                    n++;
                }
            }
            return n;
        }
    }

    运行结果如下图:

    不忘初心,方得始终,以梦为马,不负韶华
  • 相关阅读:
    postgresql全文检索部署实施
    从一整数数组中找出只重复一次的两个数
    Edit Distance 最小编辑距离
    Vue:v-model指令在其他元素类型的使用
    Vue:v-model指令
    Vue:v-on指令
    Vue:v-bind指令
    Vue:v-for指令
    框架Django
    Vue的安装和语法
  • 原文地址:https://www.cnblogs.com/newz/p/11795252.html
Copyright © 2011-2022 走看看