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;
        }
    }

    运行结果如下图:

    不忘初心,方得始终,以梦为马,不负韶华
  • 相关阅读:
    需求获取过程中的逆向沟通
    程序员==生 涯 篇
    算法设计
    灯的启示:微软对唐骏的面试题
    使用Gzip压缩提升WEB服务器性能
    简历误区
    招聘编辑的七道面试题
    web2.0及其相关技术
    经典面试题助你成功就业
    逗号网站推广营销策略
  • 原文地址:https://www.cnblogs.com/newz/p/11795252.html
Copyright © 2011-2022 走看看