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
微信扫码关注
抖音扫码关注