在 Python 中查找得分以二进制字符串表示的比赛获胜者
假设我们有一个二进制字符串表示排球比赛的得分,我们需要根据以下条件找到比赛的获胜者:
有两支队伍互相比赛,率先获得 15 分的队伍获胜,除非两支队伍都达到 14 分。
当两支队伍都达到 14 分时,领先两分的队伍获胜。
从给定的二进制字符串中,0 表示队伍失分,1 表示队伍得分。我们需要检查队伍是赢了还是输了比赛。
因此,如果输入类似于 score = "1001100110111001110011011",则输出将是“队伍获胜”。
为了解决这个问题,我们将遵循以下步骤:
score_cnt := [0,0]
对于 i 从 0 到 score 的大小,执行:
pos := score[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,则:
score_cnt[0] := 0
score_cnt[1] := 0
退出循环
i := i + 1
对于 i 从 i 到 score 的大小,执行:
pos := score[i] 的 ASCII 值 - '0' 的 ASCII 值
score_cnt[pos] := score_cnt[pos] + 1
如果 |score_cnt[0] - score_cnt[1]| 等于 2,则:
如果 score_cnt[0] > score_cnt[1],则:
返回“队伍失利”
否则,
返回“队伍获胜”
示例
让我们看看下面的实现以更好地理解:
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