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

day15

第一题

1419. 数青蛙

        本题主要是采用模拟的解题思路,用一个croak来模拟青蛙的叫声,在一堆字符串中来找到几个croak,并判断这是由几个青蛙叫的;

        

        首先我们使用数组来模拟hash表,其次我们使用hash表来映射青蛙叫的字符中的每一个元素x(x,x在数组中所对应的下标);

        接下来就是来分析解题思路:

步骤一:

        首先把青蛙的叫的字符串放在hash表中,其次使用指针来遍历给出的一串字符中有多少个青蛙叫;

步骤二:

        当我们指针所指字符串中的元素指的是青蛙叫的第一个元素时(c),首先判断数组数组中的最后一位(k)是否为1,(当k为1时,表示青蛙此前已经完整的叫了一声音,此时开始从新叫),所以当前k位置的数字-1;c位置的数字加一;如果当前的k为0,说明当前的青蛙是第一次叫,所以,只需要进行c所在位置的数字加一操作;

        当我们的指针指向青蛙叫的非第一个元素的时候,判断数组中该元素位置的前一位元素是否为1,如果是,则青蛙叫继续,前一位元素在数组中的位置进行-1操作,当前元素在数组中的位置进行+1操作,(我们是通过hash表来通过元素来查找数组中该元素的位置);如果该元素在数组中的前一个位置的元素数字不为1,则该字符串不是青蛙所能叫的,所以直接返回-1;

 步骤三:

        上述操作完成后,判断数组中1的位置,1只能出现在数组的最后一个位置,如果其他的位置上还有1,则直接返回-1;

代码如下所示:

class Solution {public int minNumberOfFrogs(String c) {char[] croakOfFrogs = c.toCharArray();String t = "croak";int n = t.length();int[] hash = new int[n]; // 数组模拟哈希表Map<Character, Integer> index = new HashMap<>(); // [x, x这个字符对应的下标for(int i = 0; i < n; i++)index.put(t.charAt(i), i);for(char ch : croakOfFrogs){if(ch == t.charAt(0)){if(hash[n - 1] != 0) hash[n - 1]--;hash[0]++;} else{int i = index.get(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];}
}

第二题

        

        首先举例子来分析:

        本题我们采用模拟和双指针的方法来解决:

        如下图所示,右指针右移,直到所遇到的数和前一个不一样时,记录该数的个数,right-left,同时将左指针移到右指针的位置,开始进行新的一轮判断;

注意事项,同时题目给的额数为n,我们只需要进行n-1次循环遍历可以;

class Solution{public String countAndSay(int n) {String ret = "1";for(int i = 1; i < n; i++) // 解释 n - 1 次 ret 即可{StringBuilder tmp = new StringBuilder();int len = ret.length();for(int left = 0, right = 0; right < len; ){while(right < len && ret.charAt(left) == ret.charAt(right)) right++;tmp.append(Integer.toString(right - left));tmp.append(ret.charAt(left));left = right;}ret = tmp.toString();}return ret;}
}

ps:本次的内容就到这里了,如果大家感兴趣的话,就请一键三连哦!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 百度 提前批 国际化广告部 (深圳-机器学习/数据挖掘/自然语言处理工程师) 一面+二面面经
  • 记录centos中操作(查找、结束、批量)进程以及crontab定时写法的知识
  • 数据库SQL语言实战(十)(最后一篇)
  • c++ set/multiset容器
  • 大数据智慧消防解决方案(24页PPT)
  • 【华为OD机试-C卷D卷-200分】二叉树的广度优先遍历(C++/Java/Python)
  • LLM中的RoPE位置编码代码解析与RoPE的性质分析(一)
  • 亲测使用frp获得访问者真实ip
  • 【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第28课-avatar玩家3D形象
  • Java学习四
  • 通付盾Web3专题 | SharkTeam:Web3常见钓鱼方式分析与安全防范建议
  • 神经网络中的归一化操作
  • 层次式架构设计理论与实践
  • kafka 案例
  • 一步步实现知乎热榜采集:Scala与Sttp库的应用
  • ES6指北【2】—— 箭头函数
  • [译] 怎样写一个基础的编译器
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • CSS魔法堂:Absolute Positioning就这个样
  • go append函数以及写入
  • iOS | NSProxy
  • PhantomJS 安装
  • PHP CLI应用的调试原理
  • Python利用正则抓取网页内容保存到本地
  • REST架构的思考
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue2 SSR 的优化之旅
  • Vue小说阅读器(仿追书神器)
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 大整数乘法-表格法
  • 离散点最小(凸)包围边界查找
  • 设计模式 开闭原则
  • 思考 CSS 架构
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 写代码的正确姿势
  • 智能合约开发环境搭建及Hello World合约
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​io --- 处理流的核心工具​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (003)SlickEdit Unity的补全
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (算法)N皇后问题
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略