問題簡介
給定一個字符串,編寫一個函數判定其是否爲某個迴文串的排列之一。
迴文串是指正反兩個方向都一樣的單詞或短語,排列是指字母重新排列,迴文串不一定是字典中的單詞。
例如:
輸入:“tactcoa”
輸出:True(排列有“tacocat”、"atcocta"等等)
解答
思路:
所有字符中,統計每個字符出現的次數,最多隻有一個字符的統計次數是奇數,剩下的必須都是偶數。即奇數只能爲1或0個,例如acca,accbcca等
from collections import Counter
def palindromic(s):
#統計所有字符出現的次數
num=list(Counter(s).values())
#統計奇數個數
odd=[x for x in num if x%2!=0]
#判斷奇數個數爲0或1
if len(odd) in [0,1]:
return True
return False
運行結果:
關於collections模塊請見collections