zoukankan      html  css  js  c++  java
  • leetcode 383. Ransom Note

    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
    
    class Solution(object):
        def canConstruct(self, ransomNote, magazine):
            """
            :type ransomNote: str
            :type magazine: str
            :rtype: bool
            """
            # hash cnt
            # sort merge
            s = collections.Counter(magazine)
            for c in ransomNote:
                if c in s and s[c]>0:
                    s[c] -= 1
                else:
                    return False
            return True

    排序,类似归并思路

    class Solution(object):
        def canConstruct(self, ransomNote, magazine):
            """
            :type ransomNote: str
            :type magazine: str
            :rtype: bool
            """
            # hash cnt
            # sort merge
            r = sorted(ransomNote)
            m = sorted(magazine)
            i = j = 0
            while i<len(r) and j<len(m):
                if r[i] == m[j]:
                    i += 1
                    j += 1
                else:
                    j += 1
            return i==len(r)
  • 相关阅读:
    数据链路层
    补码加减法
    matlab函数
    HDU2159_二维完全背包问题
    HDU2844买表——多重背包初探
    HDU1025贫富平衡
    最大m段子段和
    01背包浮点数情况
    第K大01背包
    HDU2955 01背包
  • 原文地址:https://www.cnblogs.com/bonelee/p/8660729.html
Copyright © 2011-2022 走看看