需要用到的資料結構:列表、字典
字串如何轉換成列表?
例1:「abcd」->[a,b,c,d]
str
="abcd"
list
=list
(str
)
例2:
「ad sc fv」->[ad,sc,fv]
str
="ad sc fv"
list
=str
.split(
' ')
如何給字典賦值
例1:
a=
#建立空字典
b="xx"c=1
a[b]
=cprint
(a)
執行得:
python中的迴圈體怎麼寫?
這裡模擬c語言:
for
(int i=
0;i<
9;i++
)
那麼python中的寫法是:
for i in
range(9
):pass
#或者for i in
range(0
,9):
pass
這一題應將要比較的兩個字串拆分成列表,並將列表中元素的索引值對映到對應元素上形成字典,比較形成的字典是否相等,若相等,則返回true,否則返回false。推演:
def
test()
:#初始化
pattern=
"abba"
str=
"dog cat cat dog"
#列表化
list1=
list
(pattern)
list2=
str.split(
str)
#求列表長
len1=
len(list1)
len2=
len(list2)
#依題意可知符合條件的情況下len1必然等於len2,因此這裡作比較,若不相等,則直接返回false。
if len1!=len2:
return flase
#符合條件,進入迴圈體
for i in
range
(len1)
:#判斷list1和list2的第i位元素是否作為鍵存在於各自的字典中,若都在,
if list1[i]
in dic1 and list2[i]
in dic1:
#判斷鍵對應的值是否相等。為什麼要判相等呢?後面看
if dic1[list1[i]
]==dic2[list2[i]]:
#如果相等,繼續執行迴圈體
continue
else
:#否則,說明兩字串不符合要求
return
false
#若都不在,
elif list1[i]
notin dic1 and list2[i]
notin dic1:
#將它們加進字典,並將索引值設為鍵的值
dic1[list1[i]]=i
dic2[lsit2[i]]=i
#若乙個在乙個不在:
else
:#則一定不符合要求
return flase
#若能遍歷結束,說明是符合的
renturn true
解構:
1.list1=[a,b,b,a],list2=[dog,cat,cat,dog]。dic1={},dic2={}
2.第一輪迴圈,a不在dic1中,dog不在dic2中,字典元素追加,得:dic1=,dic2=
3.第二輪迴圈,b不在dic1張,cat不在dic2中,字典元素追加,得:dic1=,dic2=
4.第四輪迴圈,b已在dic1中,cat已在dic2中.且dic1[「b」]=dic2[「cat」]=1,所以跳出當前迴圈繼續.
5.第五輪迴圈,a已在dic1中,dog已在dic2中.且dic1[「a」]=dic2[「dog」]=0,所以跳出當前迴圈繼續.
6.迴圈結束,返回true。
leetcode 209 長度最小的陣列
題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。參考 負雪明燭 class solution object def minsubarraylen self,s,nums type s int ty...
LeetCode 209 長度最小的子陣列
題目鏈結 題目描述 給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。解決方法 兩種方法 ...
Leetcode209 長度最小的子陣列
給定乙個含有 n 個正整數的陣列和乙個正整數 s 找出該陣列中滿足其和 s 的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2 解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。public intminsubarr...