每个测试文件均包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
在一行上输入一个长度为
、仅由小写字母构成的字符串
。
对于每一组测试数据,输出一个整数,表示字符串的最大“漂亮度”。
2 zhangsan lisi
192 101
对于第一组测试数据,其中一种最优的分配方案是:
将字符
的漂亮度分配为
;
将字符
的漂亮度分配为
;
将字符
的漂亮度依次分配为
;
其余字符随意分配;
最终,得到字符串的“漂亮度”为
。
对于第二组测试数据,其中一种最优的分配方案是:
将字符
的漂亮度分配为
;
将字符
的漂亮度分配为
;
将字符
的漂亮度分配为
;
其余字符随意分配;
最终,得到字符串的“漂亮度”为
。
# 定义漂亮度函数 def nicenamescore(name): name_set = set(name.lower()) # 名字全部小写字母集合 # name_elem_len = len(name_set) # 获取名字字母集合的大小 # 生成名字字母个数的列表 name_elem_cnt = [] for elem in name_set: name_elem_cnt.append(name.lower().count(elem)) # 生成降序排列的名字字母个数列表 elem_cnt_desc = sorted(name_elem_cnt, reverse=True) # 根据出现的次数按照从大到小排列 # 计算名字漂亮度 score = 0 # 初始化漂亮度为0 for i in range(len(elem_cnt_desc)): score += (26 -i) * elem_cnt_desc[i] return score # 循环处理逻辑 while True: try: # 数据输入 n = int(input().strip()) # 输入名字的个数 # 外部输入每一行的名字同时打印一个漂亮度 for k in range(n): name = input().strip() # 输入名字 print(nicenamescore(name)) # 输出名字漂亮度 except: break
n = int(input()) for i in range(n): s = input() typ = list(set(s)) typ.sort(key = lambda x:s.count(x),reverse=True) score = 0 for i in s: score += 26-typ.index(i) print(score)
n = int(input()) ls = [] for _ in range(n): ls.append(input()) def maxbeautiful(s): char = sorted(list(s)) #将字符串排序,这样相同字母的就在一起 i = 1 a = 1 res = [] #计算每个字母出现的次数,加到列表里 while i < len(char): if char[i] == char[i-1]: a += 1 i += 1 else: res.append(a) a = 1 i += 1 res.append(a) #将出现次数列表降序排列 res.sort(reverse=True) ans = 0 #然后最大的数乘26,依次递减,算出总和 for i in range(len(res)): ans += res[i]*(26 - i) return ans for item in ls: print(maxbeautiful(item))
res = [] n = int(input()) while True: try: res.append(input()) except: for s in res: tem = [] res = 0 for alpha in list(set(s)): tem.append(s.count(alpha)) tem = sorted(tem, reverse=True) for i in range(len(tem)): res += tem[i] * (26 - i) print(res) break
num = int(input())
for _ in range(num):
s = input().lower()
dct = {}
n = 0
n1 = 26
for ch in s:
if ch in dct:
dct[ch] += 1
else:
dct[ch] = 1
li = list(dct.values())
li.sort(reverse = True)
for i in li:
n += i*n1
n1 -= 1
print(n) def number(x):#统计各个字符的个数
y={}
c=[]
for i in x:
if i not in c:
c.append(i)
y[i]=1
else:
y[i]=y[i]+1
d=sorted(y.items(), key=lambda x:x[1],reverse=True)#从大到小排序
d=dict(d)
return d #字符串按出现顺序的字符的个数
def piaoliangdu(x):#对d里的每个数字进行赋值,次数出现最多的赋值最大
y=number(x)
#sum=[]#存入所有可能的漂亮度总和
n={}#存入每个字符的漂亮度
m=0
for i in y.keys():
for j in range(1,27):
if 27-int(j) not in n.values() and i not in n.keys():
n[i]=27-int(j)
m=m+int(n[i])*int(y[i])
return m
while 1:
try:
n=int(input())
for i in range(n):
x=input()
a=piaoliangdu(x)
print(a)
except:break
n = int(input())
def tanxin(s):
d={}
for i in s:
if i not in d:
d[i]=1
else:
d[i]+=1
k=d.items()
k=sorted(k,key= lambda x : x[1],reverse=True)
f=26
s=0
for i in k:
s=s+i[1]*f
f=f-1
print(s)
for i in range(n):
n = input()
tanxin(n)
ip = int(input())
dic = {}
def getMaxPerfetScore(name):
tmpDic = {}
for char in name:
if char in tmpDic.keys():
tmpDic[char] += 1
else:
tmpDic[char] = 1
sortedList = sorted(tmpDic.values(), reverse = True)
score = 0
maxPoint = 26
for item in sortedList:
score += item*maxPoint
maxPoint -= 1
return score
for i in range(ip):
name = input()
dic[name] = getMaxPerfetScore(name)
for key,value in dic.items():
print(value)
from collections import Counter while True: try: beauty = 0 num = int(input()) for i in range(num): strs = input().strip() strs_len = len(strs) dic = Counter(strs).most_common(strs_len) for j in range(len(dic)): beauty += (26-j)*dic[j][1] print(beauty) beauty = 0 except: break