資料結構基礎 逐字檢查

2021-10-09 07:47:07 字數 2205 閱讀 3943

def

anagramsolution

(s1,s2)

: alist =

list

(s2)

pos1 =

0 stillok =

true

while pos1 <

len(s1)

and stillok:

#外層迴圈負責遍歷s1中每個元素,stillok表示s2中存在,若不存在,則結束迴圈

pos2 =

0 found =

false

#預設在s2中未找到

while pos2 <

len(alist)

andnot found:

if s1[pos1]

== alist[pos2]

:#找到,found置為true,結束內層迴圈

found =

true

else

:#未找到,則查詢s2中下乙個

pos2 = pos2 +

1if found:

#找到,將s2中pos2位置的字母置為none

alist[pos2]

=none

else

:#內層迴圈結束未找到,結束整個迴圈,字串不匹配

stillok =

false

pos1 = pos1 +

1#內層迴圈結束,且找到,則pos1+1,找s1中的下個字元

return stillok

print

(anagramsolution(

"python"

,"tpyhon"

))

外層迴圈n次,內部查詢次數為1,2,3…n中的某個數,

時間複雜度為:

1+2+…+n = n*(n+1)/2

def

anagramsolution

(s1,s2)

: alist1 =

list

(s1)

alist2 =

list

(s2)

alist1.sort(

) alist2.sort(

) pos =

0 matches =

true

while pos <

len(s1)

and matches:

if alist1[pos]

== alist2[pos]

: pos +=

1else

: matches =

false

return matches

print

(anagramsolution(

"pyh"

,"hpu"

))

先對字串排序,然後逐一比較。

import operator

defanagramsolution

(s1,s2)

: adict1 =

adict2 =

for i in s1:

adict1[i]

= adict1.get(i,1)

+1for j in s2:

adict2[j]

= adict2.get(j,1)

+1sortedclasscount1 =

sorted

(adict1.items(

), key=operator.itemgetter(0)

, reverse=

true

) sortedclasscount2 =

sorted

(adict2.items(

), key=operator.itemgetter(0)

, reverse=

true

)return sortedclasscount1==sortedclasscount2

print

(anagramsolution(

"put"

,"upt"

))

返回字典對比值也是一樣,將s1,s2中每個元素轉化為字典形式,並予以計數對比

檢查資料結構的軟

講到資料結構,那麼我們先來認識一下資料結構。資料結構是在整個電腦科學與技術領域上廣泛被使用的術語。它用來反映乙個資料的內部構成。即乙個資料由那些成分資料構成,以什麼方式構成,呈什麼結構。一句話就是資料在程式中長什麼樣。怎麼用。那麼就先來認識一下資料長什麼樣子。在資料結構中,他的樣子被叫做結構,然後結...

資料結構基礎

資料結構定義 定義 一 資料元素集合 也可稱資料物件 中各元素的關係。定義 二 相互之間存在特定關係的資料元素集合。資料結構的種類 1 集合 2 線性結構 3 樹形結構 4 圖狀結構 或網狀結構 資料結構的形式定義 資料結構名稱 d,s 其中d為資料元素的有限集,s是d上關係的有限集 邏輯結構 資料...

基礎資料結構

1 雙鏈表。下面是c 版本的實現。include stdafx.h include 結構體 typedef struct nodedlink 初始化 void dlist dlink dl 求長度 int dlength dlink dl return i 查詢 dlink dsearch dlin...