每个测试文件均包含多组测试数据。第一行输入一个整数
代表数据组数,每组测试数据描述如下:
在一行上输入一个长度为
、仅由小写字母构成的字符串
。
对于每一组测试数据,输出一个整数,表示字符串的最大“漂亮度”。
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