模块六:模拟——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 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
野生风长8 小时前
C++入门基础:从命名空间到引用与指针的全面解析
开发语言·c++
来一碗刘肉面9 小时前
栈的应用(表达式求值)
数据结构·算法
xiaowang1234shs9 小时前
怪兽轻断食技术深度测评:从断食计时引擎到AI识别算法的工程实践解析
数据库·人工智能·算法·macos·机器学习·p2p·visual studio
小果因子实验室10 小时前
量化研究--策略迁移算法1研究
算法
Escalating_xu10 小时前
C++可变参数模板与引用折叠精讲
开发语言·c++
Web极客码10 小时前
如何用三段式确定性剪枝,为 LLM Agent 砍掉 35% 的 Token 成本?
服务器·人工智能·算法·机器学习
程序猿乐锅10 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
云泽80810 小时前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio