码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 1419. 数青蛙

时间:2020-09-07 18:48:46      阅读:34      评论:0      收藏:0      [点我收藏+]

标签:array   开头   pre   str   题目   lang   字符串   ref   lan   

题目链接

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

LeetCode 1419. 数青蛙

标签:array   开头   pre   str   题目   lang   字符串   ref   lan   

原文地址:https://www.cnblogs.com/ZJPaang/p/13572970.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!