[题目描述]
编写一个程序来检查是否可以重新排列给定的单词字母来形成回文单词。 回文是一个从前往后和从后往前读都一样的字符串,例如pop,racecar等。定义函数can_form_palindrome()的函数,参数为word(即输入的单词)。在函数内,如果输入字符串可以重新排列以形成回文,则返回True,否则返回False。
示例输入:
sarars
示例输出:
True
解释: 可以重新排列sarars字母形成回文单词rassar。
完整代码展示:
a=list(input())
if len(a)%2==0:
b=0
for i in range(0,len(a)):
if a.count(a[i])%2==0:
b+=1
if b==len(a):
print("True")
else:
print("False")
else:
c=0
d=0
for i in range(0,len(a)):
if a.count(a[i])%2==0:
c+=1
else:
d+=1
if d%2==1 and d+c==len(a):
print("True")
else:
print("False")
代码解释:
“a=list(input()) ”,让用户输入字符串,并将其分割成字符后储存进·列表a中。
“if len(a)%2==0:
b=0
for i in range(0,len(a)):
if a.count(a[i])%2==0:
b+=1
if b==len(a):
print("True")
else:
print("False") ”,如果列表a中的字符数量为偶数,则从左至右依次遍历列表a中所右元素,令b=0,每查找到一个在列表a中具有偶数个相同元素的元素,就令b+1。遍历结束后,判断b是否与a的长度相等。如果是,则打印“True”;否则打印“False”。(核心:回文的偶数长度字符串所有部分均轴对称,即所有元素均为偶数)
“else:
c=0
d=0
for i in range(0,len(a)):
if a.count(a[i])%2==0:
c+=1
else:
d+=1
if d%2==1 and d+c==len(a):
print("True")
else:
print("False") ”,如果列表a中的元素数量为奇,则令c=0,d=0,接着从左至右遍历列表a中所有元素,每查找到一个在列表a中具有偶数个相同元素的元素,就令c+1;否则令d+1。遍历结束后,判断d是否为1,d+c是否等于a的长度。如果是,则打印“True”;否则“False”。(核心:1,奇数+偶数=奇数 2,回文的奇数长度字符串奇数个的字符且只能在字符串中心,其余部分轴对称)
运行效果展示:
(声明:以上内容均为原创)