: #定義變位詞解決辦法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...