假设我们有一个二进制字符串表示排球比赛的得分,我们必须根据以下条件找到比赛的获胜者:
有两支球队互相比赛,得分最高15分的球队将是获胜者,除非两支球队均达到14分。
当两支球队当时都达到14分时,保持领先2分的球队将成为获胜者。
从给定的二进制字符串中,0表示团队失去积分,而1表示团队赢得积分。我们必须检查球队是赢还是输。
因此,如果输入像分数=“ 1001100110111001110011011”,那么输出将是团队获胜
为了解决这个问题,我们将遵循以下步骤-
score_cnt:= [0,0]
对于范围在0到分数范围内的我,执行
score_cnt [0]:= 0
score_cnt [1]:= 0
从循环中出来
返回“团队获胜”
返回“团队迷路”
pos:=(分数[i])的ASCII-('0')的ASCII
score_cnt [pos]:= score_cnt [pos] + 1
如果score_cnt [0]与n和score_cnt [1] − n-1相同,则
如果score_cnt [1]与n相同且score_cnt [0] <n-1,则
如果score_cnt [0]与n-1相同,而score_cnt [1]与n-1相同,则
我:=我+ 1
对于我在分数范围内的我,做
如果score_cnt [0]> score_cnt [1],则
除此以外,
返回“团队迷路”
返回“团队获胜”
pos:=(分数[i])的ASCII-('0')的ASCII
score_cnt [pos]:= score_cnt [pos] + 1
如果| score_cnt [0]-score_cnt [1] | 与2相同
让我们看下面的实现以更好地理解-
def predictWinner(score, n): score_cnt = [0,0] for i in range(len(score)): pos = ord(score[i]) - ord('0') score_cnt[pos] += 1 if (score_cnt[0] == n and score_cnt[1] < n - 1): return "Team lost" if (score_cnt[1] == n and score_cnt[0] < n - 1): return "Team won" if (score_cnt[0] == n - 1 and score_cnt[1] == n - 1): score_cnt[0] = 0 score_cnt[1] = 0 break i += 1 for i in range(i, len(score)): pos = ord(score[i]) - ord('0') score_cnt[pos] += 1 if (abs(score_cnt[0] - score_cnt[1]) == 2): if (score_cnt[0] > score_cnt[1]): return "Team lost" else: return "Team won" score = "1001010101111011101111" n = 15 print(predictWinner(score, n))
"1001010101111011101111"
输出结果
Team won