leetcode-383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

// 示例
输入:ransomNote = "a", magazine = "b"
输出:false

题解:

  1. 如果 ransomNote 的长度大于 magazine 的话,直接返回 false
  2. 统计 magazine 字符串每个字符出现的次数,出现一次 + 1,存放到一个数组里面,再遍历 ransomNote 字符串出字符的出现次数,出现一次在统计字符数组里面 - 1, 如果 统计数组对应的值 < 0 了, 直接返回 false 不包含
  3. 如果通过了以上两个判断,返回 true
// 题解代码var canConstruct = function(ransomNote, magazine) {// 如果 ransomNote 长度比 magazine 还长,直接返回 falseif (ransomNote.length > magazine.length) {return false;}// 创建一个数组,里面存的是统计次数  cnt[0] 存放着 字符串里 a 的次数// 定义一个 长度为 26的数组,里面填充 0 const cnt = new Array(26).fill(0);for (const c of magazine) {// 判断字符串里有 几个a,,几个b,,有一个就在对应位置 + 1cnt[c.charCodeAt() - 'a'.charCodeAt()]++;}// 便利 ransomNote 字符串for (const c of ransomNote) {// 判断字符串里有 几个a,,几个b,,有一个就在对应位置 - 1cnt[c.charCodeAt() - 'a'.charCodeAt()]--;// 如果小于零了,就说明肯定不包括,直接 return if(cnt[c.charCodeAt() - 'a'.charCodeAt()] < 0) {return false;}}// 两个判断都过了,就返回 truereturn true;
};

leetcode-383. 赎金信相关推荐

  1. LeetCode.383. 赎金信

    LeetCode.383. 赎金信 难度:easy 利用数组来做哈希表,分别统计两个字符串中各个字母的出现次数: class Solution {public boolean canConstruct ...

  2. LeetCode 383. 赎金信

    383. 赎金信 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 fals ...

  3. leetcode 383. 赎金信 思考分析

    题目 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成.如果可以构成,返回 tru ...

  4. Leetcode 383 赎金信

    给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成.如果可以构成,返回 true : ...

  5. leetcode 383赎金信

    给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成.如果可以构成,返回 true : ...

  6. leetcode 383 赎金信 C++

    自己想的,一个思路两个解法,从字符串中的第一个唯一字符的思路搬过来的 one class Solution {public:bool canConstruct(string ransomNote, s ...

  7. 代码随想录算法训练营第07天 | LeetCode 454.四数相加2,383. 赎金信,15. 三数之和,18. 四数之和,总结

    LeetCode [454. 四数相加 II] 题目:给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足 ...

  8. 代码随想录算法训练营day07| 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和

    Leetcode 454.四数相加II 题目链接 思路:求四数相加之和,将四数两两相加,判断两两相加的数是否和为0 定义一个map,key放两数之和,value放两数之和出现的次数 两层for循环将前 ...

  9. 代码随想录算法训练营第6天 | 454. 四数相加 II 383. 赎金信 15. 三数之和 18. 四数之和

    一.Leetcode 454. 四数相加 II 相当于两数相加.但是呢很巧妙的是,卡哥在遍历CD数组时把查哈希表的方法融入了进去.学习一下. 二.Leetcode 383. 赎金信 更简单了,主要是审 ...

  10. 代码随想录算法训练营第七天| 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

    Leetcode 454.四数相加II 思路分析: 本题直观的想法是采取暴力法,四数相加就用四层for循环.虽然能得到结果,但时间复杂度为o(n4),当数组长度较大时,Leetcode便提示超时.该方 ...

最新文章

  1. 如何上手深度学习中的图像处理?有这个代码资源库就够了
  2. Application与线程同步
  3. CTFshow 爆破 web26
  4. Mybatis源码解析之Mybatis初始化过程
  5. 异常处理——namenode启动成功但是没有namenode进程
  6. Android应用程序显示未读消息计数
  7. 社区出入登记1.0.53完整安装包+小程序前端
  8. 带你一文看懂MySqL中的事务与索引
  9. 【机器学习】回归案例实践:数据处理建模调参
  10. md5util java_Java 工具类 - MD5Util
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
  12. 计算机毕业设计——基于SSM框架的公寓租房管理系统的设计与实现
  13. php源码 gd,php 源码安装没有gd库
  14. VMware虚拟机下Ubuntu18.04学校宽带拨号连接网络
  15. PHP中冒号加引号,冒号的五种用法 冒号引号的三种用法
  16. gamma correct blurring
  17. AIOC快速卸载3dsmax2014
  18. i510300h和r54600h的区别 哪个好
  19. 一卡通管理系统 模块详细设计
  20. 这9道软件测试面试题,就能刷掉90%的软件测试员

热门文章

  1. JavaScript 19. 正则表达式
  2. SNPassoc全基因组关联分析
  3. assets路径 资源uri
  4. 对话CTO | 用声音在一起,听荔枝CTO丁宁聊UGC声音互动平台的技术世界
  5. keras 受限玻尔兹曼机_受限玻尔兹曼机及实现
  6. html5 面包屑,CSS第5款:CSS制作面包屑
  7. JAVA对象头的指针压缩
  8. [附源码]JAVA+ssm计算机毕业设计高校党建信息平台(程序+Lw)
  9. 机器学习算法 08 —— 支持向量机SVM算法(核函数、手写数字识别案例)
  10. linux系统mysql服务启动失败