程序以python中从最高到最低的顺序查找团队的最终排名

假设我们有一个称为投票的字符串列表,这里的每个条目都用小写字母表示,并且按从最高到最低的优先顺序代表候选人的投票。在这里,候选人的排名首先取决于获得最高优先级的选票数。现在,如果有平局,我们将检查在下一个最高优先级下获得的票数,依此类推。如果仍然有联系,则将按字母顺序对其进行排名。因此,我们必须按排名从高到低的顺序找到球队的最终排名。

因此,如果输入就像表决= [“ zyx”,“ zxy”,“ xyz”],则输出将是“ zxy”,因为z获得了最高优先级的最多数目,因此它排名第一。然后,x获得最高优先级的第二多票,而y没有获得任何最高优先级的投票。

为了解决这个问题,我们将遵循以下步骤-

  • count:=投票中字符串的长度

  • cand:=一个空的映射,其中每个键都是一个大小计数列表,最初它们填充为0

  • 对于投票中的每个v,

    • 将cand [c,i]增加1

    • 对于每个索引i和v中的值c,

    • 根据值按降序对Cand项目进行排序,如果值相同,则按字母顺序对它们进行排序

    • 通过串联排序后的元素返回字符串。

    让我们看下面的实现以更好地理解-

    例 

    from collections import defaultdict
    class Solution:
       def solve(self, votes):
          count = len(votes[0])
          cand = defaultdict(lambda: [0] * count)
          for v in votes:
             for i, c in enumerate(v):
                cand[c][i] += 1
          return "".join(sorted(cand.keys(), key=lambda x: (cand[x], -ord(x)), reverse=True))
         
    ob = Solution()votes = ["zyx", "zxy", "xyz"]
    print(ob.solve(votes))

    输入值

    ["zyx", "zxy", "xyz"]

    输出结果

    zxy
    猜你喜欢