所以我試圖檢查一個單詞是否是使用堆棧的迴文。我已經得到它的一個例外。如果我嘗試使用'level'這個詞,但是,如果我嘗試'levell',它會變成真實的。這是我的代碼:Palindrome with stacks
import Stack
def check_palindrome():
s = Stack.Stack()
word = input('Enter a word: ')
for x in word:
s.push(x)
palindrome = True
for x in range(len(word)):
if s.pop() == word[x]:
palindrome = True
else:
palindrome = False
if palindrome == True:
print(word, 'is a palindrome.')
else:
print(word, 'is not a palindrome.')
check_palindrome()
我似乎無法弄清楚它爲什麼說這是真的。也許我在錯誤地思考這個問題。我的思路是將每個字母添加到堆棧使用
for x in word:
s.push(x)
然後彈出它,因爲FILO和比較最後的第一個。任何有識之士將不勝感激!
取代
if palindrome == True:
因爲你,當你發現一個字母不匹配不破,你才真正看的最後一個字母。你的算法最終只關心第一個和最後一個字母是否相同。試着用'example'來看看。你的代碼中缺乏的是,當一個單詞不是迴文,它再也不能成爲迴文。 – njzk2