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...