leetcode-383:赎金信

简介: leetcode-383:赎金信

题目

题目链接

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

(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)

示例 1:

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

示例 2:

输入:ransomNote = "aa", magazine = "ab"
输出:false

示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true

解题

使用哈希表的方法

python解法

class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        hush = {}
        for c in magazine:
            hush[c] = hush.get(c,0)+1
        for c in ransomNote:
            hush[c] = hush.get(c,0)-1
            if hush[c]<0:
                return False
        return True

c++解法

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        unordered_map<char,int> map;
        for(char c:magazine){
            map[c]++;
        }
        for(char c:ransomNote){
            map[c]--;
            if(map[c]<0){
                return false;
            }
        }
        return true;
    }   
};

java

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        Map<Character,Integer> mp=new HashMap<>();
        for(int i=0;i<magazine.length();i++){
            char c=magazine.charAt(i);
            mp.put(c,mp.getOrDefault(c,0)+1);
        }
        for(int i=0;i<ransomNote.length();i++){
            char c=ransomNote.charAt(i);
            if(mp.getOrDefault(c,0)<=0) return false;
            mp.put(c,mp.getOrDefault(c,0)-1);
        }
        return true;
    }
}
相关文章
|
6月前
|
Java
383. 赎金信 --力扣 --JAVA
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能c里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。
44 1
|
索引
【Leetcode -383.赎金信 -387.字符串中的第一个唯一字符】
【Leetcode -383.赎金信 -387.字符串中的第一个唯一字符】
41 0
|
5月前
|
存储
力扣经典150题第三十九题:赎金信
力扣经典150题第三十九题:赎金信
30 0
|
6月前
【力扣】383.赎金信
【力扣】383.赎金信
LeetCode150道面试经典题--赎金信(简单)
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
66 0
|
6月前
|
存储 算法 Java
[Java·算法·简单] LeetCode 383. 赎金信 详细解读
[Java·算法·简单] LeetCode 383. 赎金信 详细解读
57 0
|
6月前
|
算法
六六力扣刷题哈希表之赎金信
六六力扣刷题哈希表之赎金信
33 0
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
44 0
|
算法 Java
【leetcode速通java版】06——赎金信、三数之和
【leetcode速通java版】06——赎金信、三数之和