a224: 明明愛明明
這篇教學會示範 ZeroJudge 基礎題庫「a224: 明明愛明明」的解題過程。
題目需求
題目會提供一些字串,透過程式忽略字串中的大小寫、標點符號與空白,接著判斷剩下的文字是否為迴文。
題目連結:a224: 明明愛明明
解答
由於此題的迴文設定為「只能有一個或零個奇數字母,其他字母都必須為偶數」,加上必須略過大小寫和空白和標點,所以使用 set 集合搭配 26 個字母的變數,篩選出「不重複」字母的字串,再依序取出這個字串的字母,將字母和原始字串比對,如果奇數字母的數量小於等於 1,表示迴文,否則就不是迴文。
參考:建立集合、in 檢查內容是否存在
while True:
try:
n = list(input().lower()) # 將輸入的文字變成全部小寫,轉成串列
s = set(n) # 將串列變成集合,就會捨去當中重複的字元
a = 0 # 新增變數 a 預設 0,記錄迴文字母的次數
table = 'abcdefghijklmnopqrstuvwxyz' # 建立只有英文字母的字串,作為捨去其它字元使用
for i in s: # 依序取出集合內的所有項目
if i in table: # 判斷如果項目為字母
c = n.count(i) # 計算字母在原始字串中出現的次數
if c%2!=0: # 從除以 2 的餘數判斷是否為奇數
a = a + 1 # 如果是奇數就將 a 增加 1
if a <= 1:
print('yes !') # 如果 a 小於等於 1,就是迴文
else:
print('no...') # 否則就不是迴文
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~