package q649 func predictPartyVictory(senate string) string { n := len(senate) revoked := make([]bool, n) rRevoke, dRevoke := 0, 0 rRem, dRem := 0, 0 for i := range n { switch senate[i] { case 'R': rRem++ case 'D': dRem++ } } for i := 0; rRem > 0 && dRem > 0; i = (i + 1) % n { if revoked[i] { continue } switch senate[i] { case 'R': if rRevoke > 0 { rRevoke-- rRem-- revoked[i] = true } else { dRevoke++ } case 'D': if dRevoke > 0 { dRevoke-- dRem-- revoked[i] = true } else { rRevoke++ } } } if rRem == 0 { return "Dire" } else { return "Radiant" } } var _ = predictPartyVictory