Python實現 贖金信 的三種方法

2021-08-28 19:43:10 字數 1786 閱讀 3774

給定乙個贖金信 (ransom) 字串和乙個雜誌(magazine)字串,判斷第乙個字串ransom能不能由第二個字串magazines裡面的字元構成。如果可以構成,返回 true ;否則返回 false。

(題目說明:為了不暴露贖金信字跡,要從雜誌上搜尋各個需要的字母,組成單詞來表達意思。)

注意:你可以假設字串中所有字元都是小寫

canconstruct("a", "b") -> false

canconstruct("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...