投票输入姓名,统计得票,然后给出得票最高者。
问题1:输入规范,名字只包含字母,且首字母大写,如果有不规范输入,请报错
问题2:如果最高得票数有多位,则给出按姓名字母排序得首位。排序规则是,大写在前,小写在后,短的在前,长的在后。

  1. 检查姓名,对于不符合规范的,返回-1
  2. 对姓名统计,做成字典,然后列表化,进行第一轮投票排序
  3. 截断得票相同的得主
  4. 按照姓名进行排序,给出最终得票最高者
    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]  # 返回最高得分人