这题用到循环队列的思想;
先用while循环实现
string predictPartyVictory(string senate) {
if (senate.size() == 1){
return senate[0] == 'R' ? "Radiant" : "Dire";
}
string s = "";
bool flags = false;
vector<int> tag;
for (int i = 0; i < senate.size(); i++){
tag.push_back(1);
}
while (!flags){
for (int i = 0; i < senate.size(); i++){
if (tag[i] != 0){
for (int j = i+1; j < (i+1+senate.size()); j++){
if (senate[j%senate.size()] != senate[i] && tag[j%senate.size()] != 0 && j != i){
tag[j%senate.size()] = 0;
break;
}
}
}
}
//直到所有标记为1的元素相同
string tmp;
int count1 = 0;
int count2 = 0;
int count = 0;
for (int i = 0; i < senate.size(); i++){
if (tag[i] == 1){
count++;
if (senate[i] == 'R'){
count1++;
}
else{
count2++;
}
}
}
if (count1 == count){
flags = true;
s = "Radiant";
}
if (count2 == count){
flags = true;
s = "Dire";
}
}
return s;
}
循环队列之后更新。