leetcode-383-Ransom Note(以空间换时间)
题目描述:
Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true
要完成的函数:
bool canConstruct(string ransomNote, string magazine)
说明:
1、古时候……绑架者会写勒索信,要求给赎金,不然就撕票。但为了不被认出自己的字迹,就会从报纸上剪出文字,拼凑成一封勒索信。这道题给定两个字符串,第一个是绑匪要写的勒索信的字符串,第二个是报纸上能提供的文字的字符串,要求判断能不能从第二个字符串中构建出第一个字符串。
第二个字符串中的每个字母只能用一次,两个字符串中只有小写字母。
2、这道题有三种做法:
①双重循环,第一个字符串碰到一个字符就去找第二个字符串中有没有,这是最慢最没有效率的做法。
②先排序,再比较,这种做法时间复杂度比①小,但也不快。
③以空间换时间,定义一个长度为26的vector,遍历一遍第二个字符串,统计所有字母的出现次数,再遍历一遍第一个字符串,逐个在vector中相应位置上减1。
最后再遍历一遍vector,看是否存在小于0的数值,如果有,返回false。如果没有,返回true。
时间复杂度是O(n)
我们采用第三种做法,构造代码如下:
bool canConstruct(string ransomNote, string magazine) { vector<int>count(26,0);for(char i:magazine)//统计第二个字符串中所有的字母出现次数count[i-'a']++;for(char i:ransomNote)//在对应的位置上减去1count[i-'a']--;for(int i:count)//遍历一遍vector,看是否存在小于0的数值{if(i<0)return false;}return true;}
上述代码实测24ms,beats 89.66% of cpp submissions。
转载于:https://www.cnblogs.com/chenjx85/p/9125327.html
leetcode-383-Ransom Note(以空间换时间)相关推荐
- Leetcode 383 Ransom Note
lc383 Ransom Note 两个for 第一个记录sourse字符串每种字母出现次数 第二个看现有字母是否能够填满target 1 class Solution { 2 public bool ...
- LeetCode 383. Ransom Note
题目 : Given an arbitrary ransom note string and another string containing letters from all the magazi ...
- leetcode 383. Ransom Note(赎金票据)
Given two strings ransomNote and magazine, return true if ransomNote can be constructed by using the ...
- [hashmap|空间换时间] leetcode 1 两数之和
[hashmap|空间换时间] leetcode 1 两数之和 1.题目 题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下 ...
- FPGA之道(62)时空变换之空间换时间
文章目录 前言 时空变换之空间换时间 缓存提速使用 模块复制 同频模块复制 缓存降频复制 缓存降频使用 逻辑拆分 流水线 流水线的由来 如何在组合逻辑中使用流水线 如何在时序逻辑中使用流水线 顺序系统 ...
- 前端遍历导致查询数据时间过长_OLAP 服务器,空间换时间可行吗?
[摘要] 全量预汇总真的是提高 OLAP 性能的可行方案吗?点击了解OLAP 服务器,空间换时间可行吗? 多维分析提供拖拽.旋转.切片.钻取等等人机交互操作,必须有秒级的响应速度.而这些操作对应的明细 ...
- 空间换时间,查表法的经典例子
前言 上一篇分享了:C语言精华知识:表驱动法编程实践 这一篇再分享一个查表法经典的例子. 我们怎么衡量一个函数/代码块/算法的优劣呢?这需要从多个角度看待.本篇笔记我们先不考虑代码可读性.规范性.可移 ...
- ie浏览器查看vue中js_浅析 Vue.js 中那些空间换时间的操作
Hello,各位小伙伴,接下来的一段时间里,我会把我的课程<Vue.js 3.0 核心源码解析>中问题的答案陆续在我的公众号发布,由于课程的问题大多数都是开放性的问题,所以我的答案也不一定 ...
- 空间换时间--程序策略
这几天修改一个去年做的程序,因为程序使用了xml保存的一些数据,整个xml文件结构欠佳,所以每次都需要对数据进行读取运算重新组合才能使用. 朋友需要这个程序多加点功能,于是顺便把这个去年做的不太好的地 ...
最新文章
- Nginx使用服务信号升级
- python 完全面向对象_Python面向对象
- BFS,优先队列优化
- Basic Calculator II
- 读《python核心编程2》笔记 1
- 《图解机器学习-杉山将著》读书笔记---CH5
- SparkStreaming与kafka的结合
- WebSocket,不再“轮询”
- python绘制贝塞尔曲线_贝塞尔曲线数学原理及Python实现
- 焊接工时简便计算工具_焊接工时定额计算手册.doc
- Nexus max file descriptors
- 父亲节python代码半个心_2019父亲节活动方案,暖心来袭!
- VMwareESX常用命令和IP地址修改
- 字节、快手、天弘基金等 :量化/算法工程师岗位【社招|校招|实习生】
- Tmux 常用快捷键
- Tracup|10个有效的工作习惯,成功的例子和技巧
- 计算机软考网络管理员题,计算机软考网络管理员理论练习题及答案(5)
- 《超算竞赛导引》阅读笔记
- 2006年世界杯——巴西队最后一次世界冠军
- 网络收集自我检测题库
热门文章
- 20189218 2018-2019-2 《密码与安全新技术专题》第9周作业
- LeetCode 之 JavaScript 解答第20题 —— 有效的括号(Valid Parentheses)
- 第十四届华中科技大学程序设计竞赛 B Beautiful Trees Cutting【组合数学/费马小定理求逆元/快速幂】...
- Windows 10下安装scrapy(pip方式,非wheel)
- 【资源共享】《Rockchip 量产烧录 指南 V1.0》
- 计算机组成原理学习笔记(一)
- 两种 js下载文件的方法(转)
- Android网络之数据解析----SAX方式解析XML数据
- 反对网抄,没有规则可以创建目标install 靠谱解答
- FLEX中Sequence实例教程. 顺序执行的效果.