https://leetcode-cn.com/problems/rank-teams-by-votes/
题意:
现在有一个特殊的排名系统,依据参赛团队在投票人心中的次序进行排名,每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。
排名规则如下:
参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在多个团队并列的情况,将继续考虑其「排位第二」的票的数量。以此类推,直到不再存在并列的情况。
如果在考虑完所有投票情况后仍然出现并列现象,则根据团队字母的字母顺序进行排名。
给你一个字符串数组 votes 代表全体投票者给出的排位情况,请你根据上述排名规则对所有参赛团队进行排名。请你返回能表示按排名系统 排序后 的所有团队排名的字符串。
方法:利用向量的排序,利用哈希表来存储所有的候选者名字,利用数组来存储一开始的候选者票数以及对应位置的关系
bool cmp(vector<int> &a,vector<int> &b)
{
int index = 1,len=a.size();//从1开始,因为0存的是这个字符距离A的距离
while(a[index]==b[index])
{
index++;
if(index==len) break;
}
if(index==len) return a[0]<b[0];//如果很不幸,两者旗鼓相当,返回字典序靠前的
return a[index]>b[index];//否则按规矩来,谁的票多,票的优先级高就返回
}
class Solution {
public:
string rankTeam