383. Ransom Note【easy】

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.

  1. canConstruct("a", "b") -> false
  2. canConstruct("aa", "ab") -> false
  3. canConstruct("aa", "aab") -> true

解法一:

  1. class Solution {
  2. public:
  3. bool canConstruct(string ransomNote, string magazine) {
  4. map<char, int> m_rans;
  5.  
  6. for (int i = ; i < ransomNote.length(); ++i) {
  7. ++m_rans[ransomNote[i]];
  8. }
  9.  
  10. for (int i = ; i < magazine.length(); ++i) {
  11. if (m_rans.find(magazine[i]) != m_rans.end()) {
  12. --m_rans[magazine[i]];
  13. }
  14. }
  15.  
  16. for (map<char, int>::iterator it = m_rans.begin(); it != m_rans.end(); ++it) {
  17. if (it->second > ) {
  18. return false;
  19. }
  20. }
  21.  
  22. return true;
  23. }
  24. };

解法二:

  1. public class Solution {
  2. public boolean canConstruct(String ransomNote, String magazine) {
  3. int[] arr = new int[];
  4. for (int i = ; i < magazine.length(); i++) {
  5. arr[magazine.charAt(i) - 'a']++;
  6. }
  7. for (int i = ; i < ransomNote.length(); i++) {
  8. if(--arr[ransomNote.charAt(i)-'a'] < ) {
  9. return false;
  10. }
  11. }
  12. return true;
  13. }
  14. }

参考@yidongwang 的代码。

解法三:

  1. class Solution {
  2. public:
  3. bool canConstruct(string ransomNote, string magazine) {
  4. unordered_map<char, int> map();
  5. for (int i = ; i < magazine.size(); ++i)
  6. ++map[magazine[i]];
  7. for (int j = ; j < ransomNote.size(); ++j)
  8. if (--map[ransomNote[j]] < )
  9. return false;
  10. return true;
  11. }
  12. };

参考@haruhiku 的代码

解法四:

  1. class Solution {
  2. public:
  3. bool canConstruct(string ransomNote, string magazine) {
  4. vector<int> vec(, );
  5. for (int i = ; i < magazine.size(); ++i)
  6. ++vec[magazine[i] - 'a'];
  7. for (int j = ; j < ransomNote.size(); ++j)
  8. if (--vec[ransomNote[j] - 'a'] < )
  9. return false;
  10. return true;
  11. }
  12. };

参考@haruhiku 的代码

383. Ransom Note【easy】的更多相关文章

  1. 142. Linked List Cycle II【easy】

    142. Linked List Cycle II[easy] Given a linked list, return the node where the cycle begins. If ther ...

  2. 121. Best Time to Buy and Sell Stock【easy】

    121. Best Time to Buy and Sell Stock[easy] Say you have an array for which the ith element is the pr ...

  3. 661. Image Smoother【easy】

    661. Image Smoother[easy] Given a 2D integer matrix M representing the gray scale of an image, you n ...

  4. 27. Remove Element【easy】

    27. Remove Element[easy] Given an array and a value, remove all instances of that value in place and ...

  5. 88. Merge Sorted Array【easy】

    88. Merge Sorted Array[easy] Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 ...

  6. 605. Can Place Flowers【easy】

    605. Can Place Flowers[easy] Suppose you have a long flowerbed in which some of the plots are plante ...

  7. 485. Max Consecutive Ones【easy】

    485. Max Consecutive Ones[easy] Given a binary array, find the maximum number of consecutive 1s in t ...

  8. 189. Rotate Array【easy】

    189. Rotate Array[easy] Rotate an array of n elements to the right by k steps. For example, with n = ...

  9. 167. Two Sum II - Input array is sorted【easy】

    167. Two Sum II - Input array is sorted[easy] Given an array of integers that is already sorted in a ...

随机推荐

  1. 【强联通分量缩点】【最长路】【spfa】CH Round #59 - OrzCC杯NOIP模拟赛day1 队爷的讲学计划

    10分算法:对于城市网络为一条单向链的数据, 20分算法:对于n<=20的数据,暴力搜出所有的可能路径. 结合以上可以得到30分. 60分算法:分析题意可得使者会带着去的城市也就是这个城市所在强 ...

  2. python3中zipfile模块的常用方法

    一.zipfile模块的简述 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的, 在这里对zipfile的使用方法做一些记 ...

  3. 小白的Python之路 day4 不同目录间进行模块调用(绝对路径和相对路径)

    一.常用模块调用函数功能解释 1.__file__ 功能:返回自身文件的相对路径 你从pycharm的执行结果可以看出,在pycharm执行atm.py文件时,是从绝对路径下去执行的,而你从cmd下去 ...

  4. 建立Spring项目的基础

    1.新建web项目 2.在lib下添加这五个包 3.新建applicationContext.xml(一定在src目录下)

  5. FrameLayout 布局

    (一) 1.效果图:颜色一直在改变,实现霓虹灯的效果 2.activity_main.xml <?xml version="1.0" encoding="utf-8 ...

  6. C++类的复习

    1.C++ 类的声明:class class_name{    private:        /*        *私有的数据和成员函数        *只能被本类中的成员函数引用,类外不能调用   ...

  7. JS面向对象函数的四种调用模式

    函数的四种调用模式 概念 在 js 中,无论是函数, 还是方法, 还是事件, 还是构造器,...这些东西的本质都是函数 函数, 方法, 事件, 构造器,...只是所处的位置不同 这四种模式分别是 函数 ...

  8. 事务的实现就是利用数据库锁(行锁,表锁等),且db上锁,都是在操作之前上锁

    悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据 ...

  9. UI控件---UIWebView

    UIWebView是内置浏览器控件,可以用来浏览网页,文档等,今天就试着做一个简易的浏览器! 定义url的初始化方法和返回,前进,刷新三个方法,实现UIWebViewDelegate协议 @inter ...

  10. iOS:iOS为什么要用-all_load、-ObjC、-force_load

    为了减少工作量复用部分代码,于是乎我们开始选择重构整个项目,把可以公用的代码放在一起打包成一个静态库导入到其他的项目中使用. 介绍这部分内容的文章在网上很多,各位可以Baidu一下细看. 但是每次在加 ...