1
interactivepython.org提供的Count and Compare Anagram solution通過列表檢查迭代,以便最終檢查每個ASCII值的計數是否相同。Python中的這個列表比較是否不必要?
j = 0
stillOK = True
while j<26 and stillOK:
if c1[j]==c2[j]:
j = j + 1
else:
stillOK = False
return stillOK
爲什麼不使用比較運算符?
return (c1 == c2)
全碼:
def anagramSolution4(s1,s2):
c1 = [0]*26
c2 = [0]*26
for i in range(len(s1)):
pos = ord(s1[i])-ord('a')
c1[pos] = c1[pos] + 1
for i in range(len(s2)):
pos = ord(s2[i])-ord('a')
c2[pos] = c2[pos] + 1
j = 0
stillOK = True
while j<26 and stillOK:
if c1[j]==c2[j]:
j = j + 1
else:
stillOK = False
return stillOK
print(anagramSolution4('apple','pleap'))
編輯補充:
anagramSolution4('abc','cba') #returns True
anagramSolution4('abc','cbd') #returns False
anagramSolution4('abc','cbah') #returns False
..they所有通:
我已經與測試。顯示c1 == c2失敗的適當測試是什麼?
你爲什麼不試試代碼並找出它是否有效? – MattDMo 2015-02-05 20:50:19
是的,這是必要的,因爲在沒有這個循環的情況下沒有輸入之間的比較......有更好的方法來完成整個事情,但該循環當前是必需的。 – Ben 2015-02-05 20:51:54
@MattDMo我做了,它通過了測試'anagramSolution4('abc','cba')'和'anagramSolution4('abc','cbd')'和'anagramSolution4('abc','cbah')' – Jack 2015-02-05 20:53:57