給定乙個贖金信 (ransom) 字串和乙個雜誌(magazine)字串,判斷第乙個字串ransom能不能由第二個字串magazines裡面的字元構成。如果可以構成,返回 true ;否則返回 false。
(題目說明:為了不暴露贖金信字跡,要從雜誌上搜尋各個需要的字母,組成單詞來表達意思。)
注意:你可以假設字串中所有字元都是小寫
canconstruct("a", "b") -> falsecanconstruct("aa", "ab") -> false
canconstruct("aa", "aab") -> true
def canconstruct(self, ransomnote, magazine):
""":type ransomnote: str
:type magazine: str
:rtype: bool
"""magdic = {}
for i in magazine:
magdic[i] = magdic.get(i, 0) + 1
for i in ransomnote:
if not magdic.get(i): #某個字母不存在或者為0均返回false
return false
magdic[i] -= 1
return true
def canconstruct(self, ransomnote, magazine):
""":type ransomnote: str
:type magazine: str
:rtype: bool
"""ranchadic = {}
ranset = set(ransomnote)
for i in ranset:
ranchadic[i] = ransomnote.count(i)
for key, value in ranchadic.items():
if magazine.count(key) < value:
return false
return true
def canconstruct(self, ransomnote, magazine):
""":type ransomnote: str
:type magazine: str
:rtype: bool
"""return all(magazine.count(i)>=ransomnote.count(i) for i in set(ransomnote))
def canconstruct(self, ransomnote, magazine):
""":type ransomnote: str
:type magazine: str
:rtype: bool
"""for i in ransomnote:
newmagazine = magazine.replace(i, '+', 1) #如果現階段magazine字串中不存在i元素,就不會進行替換操作
if newmagazine == magazine: #沒有替換操作,就說明贖金信中出現了magazine中現階段不存在的字元
return false
magazine = newmagazine
return true
演算法題來自: VMware ESXi Vlan的三種實現方式
在vmware esx esxi網路中vlan實現方式可以分成3種,分別是通過物理交換機,虛擬交換機 vswitch 和esxi中的虛擬機器 vm 來新增vlan標記,具體方式如下 1 est external switch tagging 通過將交換機的埠劃分到不同的vlan實現虛擬機器的vlan...
python之selenium三種等待方法
前提 我們在做web自動化時,有的時候要等待元素載入出來,才能操作,不然會報錯 1.強制等待 2.隱式等待 3.顯示等待 內容 一,強制等待 這個比較簡單,就是利用time模組的sleep的方法來實現 例子 1 coding utf 8 2from time import sleep 3from s...
執行緒的三種建立方
一,繼承thread 重寫run class programmer extends thread public static void main string args 二,繼承runnable 實現run class programmer implements runnable public st...