模块六:模拟——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];
    }
};
相关推荐
一只_程序媛16 分钟前
【leetcode hot 100 300】最长递增子序列
算法·leetcode·职场和发展
岁ovo寒19 分钟前
c++day7
开发语言·c++·算法
Kita~Ikuyo34 分钟前
基础数学:线性代数与优化理论
人工智能·线性代数·算法·机器学习
被AI抢饭碗的人1 小时前
c++11新内容补充
开发语言·c++
小森77672 小时前
(四)机器学习---逻辑回归及其Python实现
人工智能·python·算法·机器学习·逻辑回归·线性回归
倔强的石头1062 小时前
【C++经典例题】字符串转整数(atoi)的实现与解析
开发语言·c++
ALex_zry2 小时前
构建高可靠C++服务框架:从日志系统到任务调度器的完整实现
开发语言·c++·wpf
_zwy2 小时前
【Linux 进程控制】—— 进程亦生生不息:起于鸿蒙,守若空谷,归于太虚
linux·运维·服务器·c++
小阳拱白菜2 小时前
蓝桥杯刷题--挖矿
算法·职场和发展·蓝桥杯
补三补四2 小时前
【深度学习基础】——机器的神经元:感知机
人工智能·深度学习·算法·机器学习