【1419. 数青蛙】

目录

一、题目描述

二、算法原理

三、代码实现

代码实现1:我自己写的比较挫,但是比较简单。

cpp 复制代码
class Solution {
public:
    int minNumberOfFrogs(string croakOfFrogs) 
    {
        unordered_map<char,int> hash;
        hash['c']=0,hash['r']=0,hash['o']=0,hash['a']=0,hash['k']=0;

        for(int i=0;i<croakOfFrogs.size();i++)
        {
            if(croakOfFrogs[i]=='c')
            {
                if(hash['k']==0)
                    hash['c']++;
                else
                {
                    hash['k']--;
                    hash['c']++;
                }

            }
            else if(croakOfFrogs[i]=='r')
            {
                if(hash['c']!=0)
                {
                    hash['r']++;
                    hash['c']--;
                }
                else
                {
                    return -1;

                }
            }
            else if(croakOfFrogs[i]=='o')
            {
                if(hash['r']!=0)
                {
                    hash['o']++;
                    hash['r']--;
                }
                else
                {
                    return -1;

                }
            }
            else if(croakOfFrogs[i]=='a')
            {
                if(hash['o']!=0)
                {
                    hash['a']++;
                    hash['o']--;
                }
                else
                {
                    return -1;

                }
            }
            else if(croakOfFrogs[i]=='k')
            {
                if(hash['a']!=0)
                {
                    hash['k']++;
                    hash['a']--;
                }
                else
                {
                    return -1;
                }
            }
        }
        string str="croa";
        for(int i=0;i<str.size();i++)
        {
            if(hash[str[i]]!=0)
            {
                return -1;
            }
        }
        return hash['k'];
    }
};

代码实现2:大佬写的,干净简洁。

cpp 复制代码
class Solution {
public:
    int minNumberOfFrogs(string croakOfFrogs) 
    {
        string str="croak";
        int n=str.size();
        vector<int> hash(n);
        unordered_map<char,int> index;

        for(int i=0;i<n;i++)
        {
            index[str[i]]=i;
        }

        for(auto ch:croakOfFrogs)
        {
            if(ch=='c')
            {
                if(hash[n-1]!=0) hash[n-1]--;
                hash[0]++;
            }
            else
            {
                int i=index[ch];
                if(hash[i-1]==0)
                {
                    return -1;
                }
                else
                {
                    hash[i-1]--;
                    hash[i]++;
                }
            }
        }

        for(int i=0;i<n-1;i++)
        {
            if(hash[i]!=0)
            {
                return -1;
            }
        }
        return hash[n-1];
    }
};
相关推荐
Elias不吃糖15 分钟前
LeetCode每日一练(189, 122)
c++·算法·leetcode
w***375118 分钟前
SpringMVC 请求参数接收
前端·javascript·算法
小猪咪piggy20 分钟前
【算法】day 19 leetcode 100 矩阵+贪心
算法·leetcode·矩阵
-森屿安年-31 分钟前
LeetCode 11. 盛最多水的容器
开发语言·c++·算法·leetcode
flashlight_hi37 分钟前
LeetCode 分类刷题:112. 路径总和
javascript·算法·leetcode
努力学习的小廉1 小时前
我爱学算法之—— 多源BFS
算法·宽度优先
WWZZ20252 小时前
快速上手大模型:深度学习11(数据增强、微调、目标检测)
人工智能·深度学习·算法·目标检测·计算机视觉·大模型·具身智能
fashion 道格2 小时前
深入理解队列的艺术
数据结构·算法
大白IT2 小时前
第四部分:决策规划篇——汽车的“大脑”(第8章:行为决策——车辆的“驾驶策略师”)
人工智能·算法·机器学习
minji...3 小时前
C++ AVL树(二叉平衡搜索树)的概念讲解与模拟实现
数据结构·c++·b树·算法·avl