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

哈希表 - 赎金信

383. 赎金信

在这里插入图片描述

方法一:哈希表

/*** @param {string} ransomNote* @param {string} magazine* @return {boolean}*/
var canConstruct = function(ransomNote, magazine) {const strArr = new Array(26).fill(0), base = "a".charCodeAt();for (const s of magazine) {  // 记录magazine里各个字符出现次数strArr[s.charCodeAt() - base]++;}for (const s of ransomNote) {  // 对应的字符个数做--操作const index = s.charCodeAt() - base;if (!strArr[index]) return false;  // 如果没记录过直接返回falsestrArr[index]--;}return true;
};

方法二:字符统计

/*** @param {string} ransomNote* @param {string} magazine* @return {boolean}*/
var canConstruct = function(ransomNote, magazine) {if (ransomNote.length > magazine.length) {return false;}const cnt = new Array(26).fill(0);for (const c of magazine) {cnt[c.charCodeAt() - 'a'.charCodeAt()]++;}for (const c of ransomNote) {cnt[c.charCodeAt() - 'a'.charCodeAt()]--;if(cnt[c.charCodeAt() - 'a'.charCodeAt()] < 0) {return false;}}return true;
};

方法三:暴力解法

/*** @param {string} ransomNote* @param {string} magazine* @return {boolean}*/var canConstruct = function(ransomNote, magazine) {for (let i = 0; i < magazine.length; i++) {for (let j = 0; j < ransomNote.length; j++) {// 在ransomNote中找到和magazine相同的字符if (magazine[i] === ransomNote[j]) {ransomNote.splice(ransomNote[j], 1); // ransomNote删除这个字符串}}}// 如果ransomNote为空,则说明magazine的字符可以组成ransomNoteif (ransomNote.length === 0) {return true;console.log("magazine的字符可以组成ransomNote");}return false;console.log("magazine的字符不可以组成ransomNote");
};let a = canConstruct(["a", "a", "c"], ["a", "a", "b", "c"]);
console.log(a);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数学建模笔记(2):Topsis分析法
  • java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2
  • 【洛谷/水滴题解】[NOIP2005 普及组] 采药
  • C++入门:类和对象(入门篇)
  • 详解Linux命令--zip/unzip
  • 谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发
  • Unity动画模块 之 简单创建一个序列帧动画
  • 6 款最佳付费和免费 iPhone 解锁应用和软件
  • [FBCTF2019]RCEService1
  • Redis7-分布式锁
  • 嵌入式学习Day30---Linux软件编程---进程间的通信
  • 网络通信(TCP/UDP协议 三次握手四次挥手 )
  • Webpack Bundle Analysis:减少包体积的技巧
  • Linux——进程(2)
  • IO多路复用—前言
  • codis proxy处理流程
  • ES6简单总结(搭配简单的讲解和小案例)
  • JS变量作用域
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • php ci框架整合银盛支付
  • Python3爬取英雄联盟英雄皮肤大图
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue.js框架原理浅析
  • 编写高质量JavaScript代码之并发
  • 聊聊hikari连接池的leakDetectionThreshold
  • 如何进阶一名有竞争力的程序员?
  • 实现简单的正则表达式引擎
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 原生JS动态加载JS、CSS文件及代码脚本
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #include
  • #Z0458. 树的中心2
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2020)Java后端开发----(面试题和笔试题)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (分布式缓存)Redis持久化
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)linux文件内容查看
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一) storm的集群安装与配置
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net Core 中间件验签
  • .Net6 Api Swagger配置
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点
  • .py文件应该怎样打开?
  • @angular/cli项目构建--Dynamic.Form
  • @GetMapping和@RequestMapping的区别
  • @KafkaListener注解详解(一)| 常用参数详解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ C++ ] 继承
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ 转载 ] SharePoint 资料