【问题标题】:What's the fastest way to determine if one string / collection is a subset of another?确定一个字符串/集合是否是另一个字符串/集合的最快方法是什么?
【发布时间】:2023-02-18 12:13:34
【问题描述】:

例如,给定以下问题,实现解决方案的最短方法是什么?

给定两个字符串 ransomNote 和 magazine,如果可以使用 magazine 中的字母构造 ransomNote 则返回 true,否则返回 false。 杂志中的每个字母只能在 ransomNote 中使用一次。

肯定有比手动计算每个字符更好的方法吗?

def canConstruct(self, ransomNote: str, magazine: str) -> bool:
    c1, c2 = Counter(ransomNote), Counter(magazine)
    for letter in c1:
        if not (letter in c2 and c2[letter] >= c1[letter]):
            return False
        
    return True

【问题讨论】:

    标签: python


    【解决方案1】:

    确实有!计数器减法将产生一个新的 Counter 对象,该对象仅包含具有正值的键。如果一项是另一项的子集,减去超集将产生一个空字典。这意味着以下函数可以确定任何(可散列的)“集合”(包括字符串)是否是另一个的子集

    def isSubset(self, subset, superset) -> bool:
        return not Counter(subset) - Counter(superet)
    

    在这种情况下,下面的一行就可以了

    def canConstruct(self, ransomNote: str, magazine: str) -> bool:
        return not Counter(ransomNote) - Counter(magazine)
    

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 2013-07-06
      • 2016-05-02
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多