Pyhton資料結構 「變位詞」判斷問題

2021-10-13 19:13:41 字數 2993 閱讀 3948

: #定義變位詞解決辦法1,傳入s1,s2;兩個引數

alist=

list

(s2) #新建列表,將s2的每個字元複製alist中

pos1=

0 #用來迴圈遍歷s1的每個字元,pos就是position的縮寫

stillok=true #用來判斷是否需要繼續進行比對,若查詢中有乙個s1中字元在s2中找不到,則判定該字串不是變位詞

while pos1<

len(s1) and stillok: #當s1未遍歷完成並且s1中字元在s2中可以找到時

pos2=

0 #用來遍歷s2的每個字元

found=false #初始值為false,如果s1在s2中找到對應的,found變為true,表示已找到

while pos2<

len(alist) and not found: #如果還沒有遍歷完成s2並且s1在s2前面幾個字元中未找到匹配項,則繼續進行迴圈查詢

if s1[pos1]

==alist[pos2]

: #如果查詢成功

found=true #found變為true,退出本次迴圈

else

: #否則

pos2=pos2+

1 #pos2+

1,查詢s2下乙個字元

if found: #如果s1在s2中能找到對應的字元

alist[pos2]

=none #s2的相應字元變為none,防止重複字元查詢

else

: #如果找不到

stillok=false #表示這兩個字串不是變位詞,停止迴圈

pos1=pos1+

1 #如果沒有退出迴圈的話,pos1=pos1+

1,進入下乙個單詞查詢

下面展示一些內聯**片

def solution2

(s1,s2)

: #定**法2,傳入引數s1,s2

alist1=

list

(s1) #複製s1至列表alist1中

alist2=

list

(s2) #複製s2至列表alist2中

alist1.

sort

() #對alist1進行排序

alist2.

sort

() #對alist2進行和alist1一樣的排序

pos=

0 #從第乙個字元開始查詢

matches=true #matches用來判斷每個字元是否相等

while pos<

len(s1) and matches: #如果未遍歷完列表並且之前的字元都匹配

if alist1[pos]

==alist2[pos]

: #如果兩個相同位置的字元相同

pos=pos+

1 #則對下乙個字元進行比較

else

: #如果不相同

matches=false #退出迴圈

資料結構與演算法(三) 變位詞判斷問題

解法2 排序比較 解法3 暴力法 解法4 計數比較 小甲魚老師的資料結構與演算法是以c為基礎的,統計出身,沒有學過c,就換了其他的課來聽啦。現在聽的是mooc上北大的課,以python為基礎的。變位詞是指兩個詞之間存在組成字母重新排列關係,如heart和earth,python和typhon。為了簡...

資料結構與演算法 Python版 三 變位詞判斷問題

所謂 變位詞 是指兩個詞之間存在組成字母的重新排列關係,如 heart 和 earth,python 和 typhon,為了簡單起見,假設參與判斷的兩個詞僅由小寫字母構成,而且長度相等 將詞1中的字元逐個到詞2中檢查是否存在存在就 打勾 標記 防止重複檢查 如果每個字元都能找到,則兩個詞是變位詞只要...

變位詞判斷 python

python資料結構與演算法分析 第二版 寫乙個bool函式,以兩個詞為引數,返回這兩個詞是否為變位詞。假設參與判斷的兩個詞僅由小寫字母組成,且長度相等如 abcd和cdab user bin env python coding utf 8 方案1 清點法 時間複雜度為平方 defanagramso...