赎金信

概述:给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 falsemagazine 中的每个字符只能在 ransomNote 中使用一次。

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

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

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

方法一:Counter() 方法

思路:用 Counter() 方法统计出每个字符串出现次数,然后判断相减是否为空即可。

# Counter() 方法
# 用 Counter() 方法统计出每个字符串出现次数,然后判断相减是否为空即可。
class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        if len(ransomNote) > len(magazine):
            return False
        return not collections.Counter(ransomNote) - collections.Counter(magazine)

方法二:暴力循环

思路:题目要求是 magazine 包含了 ransomNote,那么转为列表依次判断并移除即可。

# 暴力循环
# 题目要求是 magazine 包含了 ransomNote,那么转为列表依次判断并移除即可。
class Solution:
    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        list_1 = list(ransomNote)
        list_2 = list(magazine)
        for i in range(len(list_2)):
            if list_2[i] in list_1:
                list_1.remove(list_2[i])
        return len(list_1) == 0

总结

这是新手题吗,可能我是断手,看的都吃力

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐