【LeetCode】383. Ransom Note 解题报告(Java & Python)
作者: 负雪明烛
 id: fuxuemingzhu
 个人博客: http://fuxuemingzhu.cn/
[LeetCode]
题目地址:https://leetcode.com/problems/ransom-note/
- Difficulty: 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.
canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true
题目大意
判断ransom能否由magazines的字符构成。
解题方法
Java解法
理解题意很关键,这个是说从magazine中取出几个元素排列组合能够摆成ransomNote。
参考Find the Difference的题目,做个有26个位置的数组,保存字符出现的次数,最后统计一下即可。
其中一个字符串的元素使位置元素++,另外个字符串使字符串–;
public class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        if(ransomNote.length() > magazine.length())
            return false;
        int []chars= new int[26];
        for(int i=0; i< magazine.length(); i++){
            chars[magazine.charAt(i)- 'a']++;
        }
        for(int i=0; i< ransomNote.length(); i++){
            chars[ransomNote.charAt(i)- 'a']--;
            if(chars[ransomNote.charAt(i)- 'a'] < 0){
                return false;
            }
        }
        return true;
    }
}
AC:18 ms
Python解法
直接Counter,然后判断前者的每个字符出现次数都小于后者即可。
class Solution:
    def canConstruct(self, ransomNote, magazine):
        """
        :type ransomNote: str
        :type magazine: str
        :rtype: bool
        """
        rcount = collections.Counter(ransomNote)
        mcount = collections.Counter(magazine)
        for r, c in rcount.items():
            if c > mcount[r]:
                return False
        return True
日期
2017 年 1 月 7 日
 2018 年 11 月 14 日 —— 很严重的雾霾
【LeetCode】383. Ransom Note 解题报告(Java & Python)的更多相关文章
- 【LeetCode】120. Triangle 解题报告(Python)
		
[LeetCode]120. Triangle 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址htt ...
 - 【LeetCode】575. Distribute Candies 解题报告(Java & Python)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 Python解法 日期 题目地址:ht ...
 - Java [Leetcode 383]Ransom Note
		
题目描述: Given an arbitrary ransom note string and another string containing letters from al ...
 - leetcode 383. Ransom Note
		
Given an arbitrary ransom note string and another string containing letters from all th ...
 - 14. leetcode 383. Ransom Note
		
Given an arbitrary ransom note string and another string containing letters from all the magazines, ...
 - LeetCode: 383 Ransom Note(easy)
		
题目: Given an arbitrary ransom note string and another string containing letters from all the magazin ...
 - 【LeetCode】237. Delete Node in a Linked List 解题报告 (Java&Python&C++)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 设置当前节点的值为下一个 日期 [LeetCode] ...
 - 【LeetCode】349. Intersection of Two Arrays 解题报告(Java & Python)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:Java解法,HashSet 方法二:Pyt ...
 - 【LeetCode】136. Single Number 解题报告(Java & Python)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 异或 字典 日期 [LeetCode] 题目地址:h ...
 
随机推荐
- [R] 保存pheatmap图片对象到文件
			
一般我们使用pheatmap通过Rstudio交互得到的图片在plots的Export导出即可,如何保存对象到文件呢?这个需求在自动化流程中很常见,作者似乎也没说明. 生成示例数据: test = m ...
 - mysql—mysql错误Every derived table must have its own alias解决
			
Every derived table must have its own alias 这句话的意思是说每个派生出来的表都必须有一个自己的别名. 一般在多表查询时,会出现此错误. 因为,进行嵌套查询的 ...
 - kubernetes部署 flannel网络组件
			
创建 flannel 证书和私钥flannel 从 etcd 集群存取网段分配信息,而 etcd 集群启用了双向 x509 证书认证,所以需要为 flanneld 生成证书和私钥. cat > ...
 - POLLOUT/POLLINT事件触发测试
			
一般poll使用过程中都是检测POLLIN事件,表示描述符有事件可以处理了,需要我们处理.对POLLOUT事件触发的方式相对较少,网上也有很多对此触发的疑问,利用实际项目中用的一个用法,下面做了个测试 ...
 - 大数据学习day13------第三阶段----scala01-----函数式编程。scala以及IDEA的安装,变量的定义,条件表达式,for循环(守卫模式,推导式,可变参数以及三种遍历方式),方法定义,数组以及集合(可变和非可变),数组中常用的方法
			
具体见第三阶段scala-day01中的文档(scala编程基础---基础语法) 1. 函数式编程(https://www.cnblogs.com/wchukai/p/5651185.html): ...
 - Linux学习 - 分区与文件系统
			
一.分区类型 1 主分区:总共最多只能分四个 2 扩展分区:只能有一个(主分区中的一个分区),不能存储数据和格式化,必须再划分成逻辑分区 才 ...
 - 【编程思想】【设计模式】【其他模式】blackboard
			
Python版 https://github.com/faif/python-patterns/blob/master/other/blackboard.py #!/usr/bin/env pytho ...
 - Static data members in C++
			
Predict the output of following C++ program: 1 #include <iostream> 2 using namespace std; 3 4 ...
 - 【Linux】【Services】【Project】Haproxy Keepalived Postfix实现邮件网关Cluster
			
1. 简介: 1.1. 背景:公司使用exchange服务器作为邮件服务器,但是使用Postfix作为邮件网关实现病毒检测,内容过滤,反垃圾邮件等功能.原来的架构非常简单,只有两台机器,一个负责进公司 ...
 - Docker常用image
			
MySQL Start a mysql server instance Starting a MySQL instance is simple: docker run -itd --name mysq ...