資料結構與演算法Python版第三週OJ作業

2021-10-04 03:22:22 字數 2415 閱讀 1656

題目內容:

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

輸入格式:

一行字串

輸出格式:

true或false,表示該輸入是否為合法括號串

輸入樣例:

輸出樣例:

true

遍歷字串,遇到左括號時入棧,遇到與之匹配的右括號時,之前的左括號出棧,遍歷完成後若棧為空則表示括號匹配成功,否則匹配失敗。

def

perchecker

(s):

stack =

# 用列表模擬棧

for i in s:

if i in

'(]'

return opens.index(

open

)== closers.index(close)

print

(perchecker(

input()

))

題目內容

開心消消樂我們都熟悉,我們可以用剛學過的棧來做乙個「一維」的開心消消樂遊戲,這個遊戲輸入一串字元,逐個消去相鄰的相同字元對。

如果字元全部被消完,則輸出不帶引號的「none」

輸入格式:

乙個字串,可能帶有相鄰的相同字元,如「aabbbc」

輸出格式:

乙個字串,消去了相鄰的成對字元,如「bc」

輸入樣例:

beepoo***yz

輸出樣例:

bpxyz

遍歷字串,先將第乙個字元入棧,之後的字元判斷與前乙個字元是否一致,若一致則將之前的字元出棧,若不一致則入棧,最後將棧內的字元連線後返回。

def

eliminate

(s):

stack =

for i in s:

iflen

(stack)==0

:elif i == stack[-1

]:stack.pop(

)else

:return stack

print(''

.join(eliminate(

input()

)))

題目內容:

洗碗工小明碰上了一位強迫症老闆老王,餐廳一共就10只盤子,老闆給仔細編上了0~9等10個號碼,並要求小明按照從0到9的編號來洗盤子,當然,每洗好乙隻盤子,就必須得整齊疊放起來。

小明洗盤子期間,經常就有顧客來取盤子,當然每位顧客只能從盤子堆最上面取1只盤子離開。

老王在收銀台仔細地記錄了顧客依次取到盤子的編號,比如「1043257689」,這樣他就能判斷小明是不是遵照命令按照0123456789的次序來洗盤子了。

你也能像老王一樣作出準確的判斷嗎?

輸入格式:

長度為10的字串,其中只包含0~9的數字,且不重複,代表顧客依次取到的盤子編號

輸出格式:

字串:yes或者no,表示遵照次序洗盤子,或者沒有遵照次序洗盤子

輸入樣例:

輸出樣例:

yes如果盤子按順序洗,當你往前取編號小的盤子時,編號大1的盤子肯定已經被取走了,例如先取走4、5,之後取走3,此時4肯定已經被取走了

def

washdishes

(s):

stack =

for i in s:

iflen

(stack)==0

:elif i < stack[-1

]:# 判斷是否往前取編號小的盤子

ifnot i +

1in stack:

# 判斷編號大1的盤子是否已經被取走

return

'no'

else

:else

:return

'yes'

dish_index =

for i in

input()

:print

(washdishes(

list

(map

(int

, dish_index)))

)

Python資料結構與演算法分析(第2版)閱讀筆記

正文提取碼 fjlk 中序表示式,前序表示式,後續表示式 使用棧這種資料結構來儲存 a b c a 存入列表末端 入棧 b 存入列表末尾 入棧之前,判斷棧裡是否有高於或等於其優先順序的運算子,若有,將其彈出並存到列表末尾,把 存到列表末尾,號入棧 b 存入列表尾部帶括號的情況 a b c d e f...

資料結構與演算法 遞迴演算法(Python版)

一 整數轉換為任意進製 我們用最熟悉的十進位制分析下這個問題 十進位制有十個不同符號 convstring 0123456789 比十小的整數 轉換成十進位制,直接查表 就可以 了 convstring n 想辦法把比十大的整數,拆成一系列比十小的整 數,逐個查表,比如七百六十九,拆成 七 六 九,...

MOOC資料結構與演算法Python版 第六周測驗

1 單選 2分 下列哪個演算法使用到了分治策略?d 2單選 2分 函式值快取最適合使用哪種python中的資料型別?b 3 單選 2分 已知數列g x 滿足 根據遞推式寫出求數列值的遞迴演算法,問原始演算法與採用函式值快取的演算法時間複雜度分別為多少?a 4 單選 2分 博物館大盜問題中,若共有10...