投票输入姓名,统计得票,然后给出得票最高者。
问题1:输入规范,名字只包含字母,且首字母大写,如果有不规范输入,请报错
问题2:如果最高得票数有多位,则给出按姓名字母排序得首位。排序规则是,大写在前,小写在后,短的在前,长的在后。
- 检查姓名,对于不符合规范的,返回-1
- 对姓名统计,做成字典,然后列表化,进行第一轮投票排序
- 截断得票相同的得主
- 按照姓名进行排序,给出最终得票最高者
class Solution: def findWinner(self,names): votes = {} for x in names: # 检查姓名,完成统计 if not x.isalpha() or not x.istitle():return -1 votes.setdefault(x,0) votes[x]+=1 votesSort=sorted(votes.items(),key=lambda x:x[-1],reverse=True) # 按照得分进行逆序 votesSort=[x for x in votesSort if x[1]==votesSort[0][1]] # 截断最高得分者 votesSort=sorted(votesSort,key=lambda x:x[0]) # 对得分相同的人,对姓名进行排序 return votesSort[0][0] # 返回最高得分人