模块六:模拟——1419.数青蛙

文章目录

题目描述

题目链接:1419.数青蛙

算法原理

解法(模拟 + 分情况讨论)

模拟⻘蛙的叫声。

当遇到 'r' 'o' 'a' 'k' 这四个字符的时候,我们要去看看每⼀个字符对应的前驱字符,有没有⻘蛙叫出来。如果有⻘蛙叫出来,那就让这个⻘蛙接下来喊出来这个字符;如果没有,直接返回 -1 ;

当遇到 'c' 这个字符的时候,我们去看看 'k' 这个字符有没有⻘蛙叫出来。如果有,就让这个⻘蛙继续去喊 'c' 这个字符;如果没有的话,就重新搞⼀个⻘蛙。

代码实现

cpp 复制代码
class Solution {
public:
    int minNumberOfFrogs(string croakOfFrogs) {
        const string croak = "croak";
        int n = croak.size();
        vector<int> hash(n);//用数组来模拟哈希表

        unordered_map<char,int> index;//[x,x所对应的下标]
        for(int i = 0;i < n;i++){
            index[croak[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;
                hash[i - 1]--;
                hash[i]++;
            }
        }
        for(int i = 0;i < n - 1;i++){
            if(hash[i] != 0)return -1;
        }
        return hash[n - 1];
    }
};
相关推荐
郝学胜_神的一滴4 小时前
CMake 018:解决头文件编译失效\&VS项目无法展示头文件难题
c++·cmake
影视飓风TIM4 小时前
C++ 核心语法进阶:【类和对象终章】从对象拷贝到友元与优化(补上期重载)
c++
小鹏linux4 小时前
鸿蒙PC迁移:Tesseract OCR C++ 三方库鸿蒙适配全记录
c++·ocr·harmonyos
森G4 小时前
65、UDP协议(拓展选学)---------网络编程
网络·c++·qt·网络协议·tcp/ip·udp
WWW65264 小时前
代码随想录 打卡第五十八天
开发语言·c++·算法
pen-ai4 小时前
【HistGBM 系列①】从决策树到梯度提升 —— GBDT 原理精讲
算法·决策树·机器学习
少司府5 小时前
C++基础入门:_stack_queue 底层奥秘
开发语言·数据结构·c++·栈和队列·queue·stack
Black蜡笔小新5 小时前
零代码私有化自动化AI算法训练服务器DLTM如何破解企业AI落地难题
人工智能·算法·自动化
liulilittle5 小时前
回归物理本质:对拥塞控制实验室依赖与公平性误置的反思
网络·tcp/ip·计算机网络·算法·tcp·通信·拥塞控制
牛油果子哥q5 小时前
unordered_set / unordered_map 底层哈希表精讲,哈希原理、哈希冲突、链地址法、源码结构、有序与无序容器终极选型全解
数据结构·算法·哈希算法·散列表