• LeetCode 1419. 数青蛙


    题目链接

    1419. 数青蛙

    题目思路

    这个题一开始我也没啥思路,所以参考了评论区的大佬的解法,然后自己写了点自己的理解。

    代码

    class Solution {
        public int minNumberOfFrogs(String croakOfFrogs) {
            char[] str = croakOfFrogs.toCharArray();
            //如果字符为空或者字符长度不是5的倍数或者字符串不是以c开头或者字符串不是以k结尾的情况都为不能构成完整croak的情况。
            if(str.length == 0 || str[0] != 'c' || str[str.length - 1] != 'k' || str.length % 5 != 0){
                return -1;
            }
            //用于统计每个字符出现的次数
            int[] bucket = new int[127];
            int res = 0;
            for(char x : str){
                bucket[x]++;
                //因为题目要求按照顺序才能算正确,如果遍历过程中出现任意一次字符乱序的情况,代表整个字符串的有序性就被破坏了,直接返回不成立条件
                if(bucket['c'] < bucket['r'] || bucket['r'] < bucket['o'] || bucket['o'] < bucket['a'] || bucket['a'] < bucket['k']){
                    return -1;
                }
                //这里如果出现了新的c,代表着这是另外一个croak的出现,那么这里就有可能要更新res,分两种情况。
                //第一种情况是前面刚好完成一次croak的过程,那么当前这个c就可以由上次叫完的青蛙继续叫。
                //第二种情况就是如果在croak过程中插入了一个新的c,那么这个新的c就需要由第二只青蛙来完成。
                if(x == 'c'){
                    res = Math.max(bucket['c'] - bucket['k'], res);
                }
            }
            return res;
        }
    }
    
  • 相关阅读:
    【JLOI2011】飞行路线
    P3369 【模板】普通平衡树
    P1144 最短路计数
    P1462 通往奥格瑞玛的道路
    【NOIP2017】宝藏
    P1120 小木棍
    P3919 【模板】可持久化数组(可持久化线段树/平衡树)
    P3834 【模板】可持久化线段树 1(主席树)
    矩阵清零--进军硅谷
    二维数组搜素--进军硅谷
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13572970.html
Copyright © 2020-2023  润新知