模块六:模拟——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];
    }
};
相关推荐
深圳市益普科技有限公司20 分钟前
半导体良率管理YMS:良率与设备参数的相关性,先拉哪几组数据
人工智能·python·算法
努力努力再努力wz1 小时前
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度
开发语言·c++·c++20·1024程序员节
程序员清风1 小时前
算法题中的边界条件、测试与调试
开发语言·算法·kotlin
划破黑暗的第一缕曙光1 小时前
[C++]:4.模板
c++·template·模板·函数模版·类模版
十五年专注C++开发2 小时前
pybind11:一个跨C++和Python平台的编程库
开发语言·c++·python·pybind11
CodeYp20192 小时前
第11讲:stack 和 queue
开发语言·c++·queue·stack
炘爚2 小时前
数据结构算法总结
数据结构·python·算法
Dageno_AI2 小时前
ChatGPT 不再引用 Reddit 之后,还值得在 Reddit 上做 AI 可见度吗?
算法
沫璃染墨2 小时前
《Qt从零入门系列(十五):Qt线程安全与锁机制详解——从QMutex到RAII与读写锁实战》
开发语言·c++·qt·安全·交互·线程·qt6.3
hetao17338372 小时前
2026-10-25 hetao1733837 的刷题记录
c++·算法