python练习题,输入一个由大小写字母组成的字符串A。从这个字符串中拿出一些字母,重新组合成对称字符串B,问在输入 某个A的情况下,B的最大长度是多少?

输入一个由大小写字母组成的字符串A。从这个字符串中拿出一些字母,重新组合成对称字符串B,问在输入 某个A的情况下,B的最大长度是多少?

s = list(input('请输入一个字符串:'))
num = []
# 将字符串转换为没有重复的列表并排序方便与后面压缩字典对应
no_repeat_s = list(set(s))
no_repeat_s.sort()
# 统计每个字母的个数
for i in no_repeat_s:
    num.append(s.count(i))
# 将字母与其对应出现的次数压缩成字典
dict_s = dict(zip(no_repeat_s, num))
# 初始总长度和flag flag 用于检测是否有单个的字符
total = 0
flag = 0
# 如果字符串中有字符出现偶数次,那么可以全拿出来拼接
# 如果字符串中有字符出现奇数次,那么可以拿出 n-1 个来拼接
# 注:如果发现有奇数次的话:
#     总字符数如果是奇数,说明最后可以放任意多余的字符在中间的位置
#     总字符数如果是偶数的话,那应该还有一个奇数串,所以最后也可以放一个多余的字符在中间的位置
for i in no_repeat_s:
    if dict_s[i] % 2 == 0:
        total += dict_s[i]
    else:
        flag = 1
        total += dict_s[i] - 1
if flag == 1:
    print(total + 1)
else:
    print(total)

你可能感兴趣的:(python,python,练习题)