美文网首页算法
1419. 数青蛙

1419. 数青蛙

作者: 红树_ | 来源:发表于2023-05-05 13:35 被阅读0次

江无回头浪,人无再少年。年华若虚度,老来恨不浅。时光容易逝,岁月莫消遣。碌碌而无为,生命不值钱。

LC每日一题,参考1419. 数青蛙,难度分1690。

题目

给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs 中会混合多个 “croak”
请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。

  • 要想发出蛙鸣 "croak",青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。如果字符串 croakOfFrogs 不是由若干有效的 "croak" 字符混合而成,请返回 -1
输入:croakOfFrogs = "crcoakroak"
输出:2 
解释:最少需要两只青蛙

解题思路

  • 统计词频:需要找规律,对于叫声有顺序和数量的规则限制,同时统计当前遇到c的数量-当前遇到的k的数量即为最小青蛙数。

统计词频

class Solution {
    public int minNumberOfFrogs(String croakOfFrogs) {
        if(croakOfFrogs.length() %5 != 0) return -1;
        int ans = 0;
        //判断c字符数量 和 k字符数量前后关系 最小即为最大的c-k区间(cCount-kCount)
        int cCount = 0,rCount = 0,oCount = 0,aCount = 0,kCount = 0;
        for(char c : croakOfFrogs.toCharArray()) {
            if(c == 'c') ans = Math.max(ans,++cCount-kCount);
            else if(c == 'r') rCount++;
            else if(c == 'o') oCount++;
            else if(c == 'a') aCount++;
            else if(c == 'k') kCount++;
            //判断先后关系
            if(cCount < rCount || rCount < oCount || 
               oCount < aCount || aCount < kCount) return -1;
        }
        //判断数量关系
        if(cCount != rCount || rCount != oCount || 
           oCount != aCount || aCount != kCount) return -1;
        return ans;
    }
}

复杂度分析

  • 时间复杂度:O(n),遍历字符串s一次,n为字符串s长度。
  • 空间复杂度:O(1),只使用常数(5)个变量空间。

相关文章

  • 1419. 数青蛙

    插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。[http...

  • 周检视 20190114~20日

    周检视2019/1/14~20 一、本周已完成和未完成青蛙数? 累计青蛙数? 本周青蛙数: 20 本周完成青蛙数:...

  • 周检视20190204-10

    周检视20190204~10 一、本周已完成和未完成青蛙数?累计青蛙数?本周青蛙数: 20 累计青蛙数:本周完成青...

  • 3月第一周周检视

    周检视20190304~10 一、本周已完成和未完成青蛙数?累计青蛙数? 3月份累计青蛙数: 30 本周青蛙数: ...

  • 数青蛙

  • 周检视20190311~17

    周检视20190311~17 一、本周已完成和未完成青蛙数?累计青蛙数? 3月份累计青蛙数: 30+21 本周青蛙...

  • 蛙,哇!

    春夏之交,雨水充沛之时,田野里,农村里,最常见的要数青蛙。在青蛙里,我最喜爱的就数全绿的青蛙。 雨水太大时,河水漫...

  • 《积的变化规律》教学设计

    一:导入 师:在上课之前我们一起来唱一首数青蛙的顺口溜吧。一只青蛙四条腿,两只青蛙八条腿,三只青蛙十二条腿,四只青...

  • 失眠

    昨晚我又数青蛙了,蚊子走了,于是我又数蛇,但是蛇有点小害怕,所以,我又数猫,最后,狗吠声出来了,吓得鸡开始打鸣了。

  • 晨练11

    2018年10月28日,晨练第101天 冥想,腿塑型,睡天鹅式左右各100个数,蝴蝶式鸽子式各100个数,趴青蛙(...

网友评论

    本文标题:1419. 数青蛙

    本文链接:https://www.haomeiwen.com/subject/rqxqsdtx.html