当前位置: 首页 > news >正文

数青蛙 --- 模拟

目录

一:题目

二:算法原理

三:代码实现


一:题目

题目链接:1419. 数青蛙 - 力扣(LeetCode) 

二:算法原理

三:代码实现

if else版本:

class Solution {
public:int minNumberOfFrogs(string croakOfFrogs){int len = croakOfFrogs.size();unordered_map<char, int> hash;for (int i = 0; i < len; i++){if (croakOfFrogs[i] == 'c'){if (hash.count('k') && hash['k'] != 0){hash['k']--;hash['c']++;}elsehash['c']++;}else if (croakOfFrogs[i] == 'r'){if (hash.count('c') && hash['c'] != 0){hash['c']--;hash['r']++;}elsereturn -1;}else if (croakOfFrogs[i] == 'o'){if (hash.count('r') &&hash['r'] != 0){hash['r']--;hash['o']++;}elsereturn -1;}else if (croakOfFrogs[i] == 'a'){if (hash.count('o') && hash['o'] != 0){hash['o']--;hash['a']++;}elsereturn -1;}else if (croakOfFrogs[i] == 'k'){if (hash.count('a') && hash['a'] != 0){hash['a']--;hash['k']++;}elsereturn -1;}}if(hash['c'] == 0 && hash['r'] == 0 && hash['o'] == 0&&hash['a'] ==0)return hash['k'];else return -1;}
};

哈希表存<字符,下标>版:

class Solution {
public:int minNumberOfFrogs(string croakOfFrogs) {string s = "croak";//将它存在字符串中,代码适用于题目不知道字符串内容int len = s.size();vector<int> hash(len);//用数组模拟哈希表,每一个字符对应一个下标unordered_map<char,int> index;//存[x,x对应的下标],x的前驱就是对应下标-1for(int i = 0;i < len; i++){index[s[i]] = i;}for(auto ch :croakOfFrogs){if(ch == s[0]){if(hash[len-1] != 0)hash[len-1]--;hash[0]++;}else{int i = index[ch];//当前字符的下标if(hash[i-1] == 0)return -1;else{hash[i-1]--;hash[i]++;}}   }//如果最后除了k以外其他字符不为0,说明有的青蛙没有叫完,也不行for(int i = 0; i < len-1;i++){if(hash[i] != 0)return -1;}return hash[len-1];}
};

http://www.xdnf.cn/news/513271.html

相关文章:

  • Go语言中函数 vs 方法
  • JVM如何处理多线程内存抢占问题
  • 【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
  • 【Linux】第十九章 管理SELinux安全性
  • 数字格式化库 accounting.js的使用说明
  • “Cloud Native English“云原生时代下的微服务架构设计:从理论到实战全解析
  • 【数据结构】2-3-2 单链表的插入删除
  • 结构型模式:代理模式
  • 改进模糊C均值时序聚类+编码器状态识别!IPOA-FCM-Transformer组合模型
  • 牛客网NC276055:三根木棒能否组成三角形问题详解(ACM中的A题)
  • 【C++】尾置返回类型(Trailing Return Type)总结
  • 多模态大语言模型arxiv论文略读(八十)
  • vscode优化使用体验篇(快捷键)
  • React 19版本refs也支持清理函数了。
  • 【C++】set、map 容器的使用
  • Java 中 == 与 equals() 详解
  • 索引与数据结构、并行算法
  • LlamaIndex中应用自定义提示词提升回答质量
  • go语言协程调度器 GPM 模型
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的Dify 快速构建聊天助手
  • 目标检测新突破:用MSBlock打造更强YOLOv8
  • 如何使用WordPress创建美食博客
  • 跨平台多用户环境下PDF表单“序列号生成的服务器端方案“
  • 如何实现RTSP和RTMP低至100-200ms的延迟:直播SDK的技术突破
  • Metasploit框架与网络安全攻防技术解析
  • 标准库、HAl库和LL库(PC13初始化)
  • 【甲方安全建设】Python 项目静态扫描工具 Bandit 安装使用详细教程
  • 视差场(disparity field)
  • Linux之基础IO
  • MySQL 数据库备份与还原