力扣383. 赎金信

简介: 力扣383. 赎金信

力扣383. 赎金信

一、题目描述:

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

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

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


示例 1:

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

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

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

提示:

1 <= ransomNote.length, magazine.length <= 10^5

ransomNote 和 magazine 由小写英文字母组成

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ransom-note著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析:

这道题考察了什么思想?你的思路是什么?

  1. 看到这道题目,我的第一想法是给两个字符串计数,得到两组数据,然后比较这两组数据即可。

做题的时候是不是一次通过的,遇到了什么问题,需要注意什么细节?

  1. 使用Python时,不知道collections.Counter() 之间可以相减。实现起来有点麻烦。这道题目用Python就十分简单了。

有几种解法,哪种解法时间复杂度最低,哪种解法空间复杂度最低,最优解法是什么?其他人的题解是什么,谁的效率更好一些?用不同语言实现的话,哪个语言速度最快?


  1. 看了很多大佬的解法,都大同小异,不过这种解法也是我比较喜欢。

三、AC 代码:

Python:

classSolution(object):

   defcanConstruct(self, ransomNote, magazine):

       """

       :type ransomNote: str

       :type magazine: str

       :rtype: bool

       """

       returnnotcollections.Counter(ransomNote) -collections.Counter(magazine)

Golang:

funccanConstruct(ransomNote, magazinestring) bool {

   iflen(ransomNote) >len(magazine) {

       returnfalse

   }

   cnt := [26]int{}

   for_, ch :=rangemagazine {

       cnt[ch-'a']++

   }

   for_, ch :=rangeransomNote {

       cnt[ch-'a']--

       ifcnt[ch-'a'] <0 {

           returnfalse

       }

   }

   returntrue

}

四、总结:

朴实无华的一道题目,基本功扎实都能做出来。

目录
相关文章
|
6月前
|
Java C++ Python
leetcode-383:赎金信
leetcode-383:赎金信
45 1
|
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 里面的字符构成。
65 0
|
6月前
|
存储 算法 Java
[Java·算法·简单] LeetCode 383. 赎金信 详细解读
[Java·算法·简单] LeetCode 383. 赎金信 详细解读
56 0
|
6月前
|
算法
六六力扣刷题哈希表之赎金信
六六力扣刷题哈希表之赎金信
33 0
|
算法
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
代码随想录算法训练营第七天 | LeetCode 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
44 0