思路:
遍历字符串 找到当前参议员后面的第一个对手 并且剔除该对手 直到最后字符串中只剩下同一个阵营的字母
代码:
def predictPartyVictory(self, senate):
s=senate
i=0
n=len(s)
while i<n:
#当前是D队的情况
if s[i]=='D':
#如果还剩对方的人 剔除对方的第一个选手
if 'R' in s:
j=i #用j记录当前选手i的位置
#找到当前选手后面的第一个对手
while j<n and s[j]!='R':
j+=1
if j==n:
j=0
while j<i and s[j]!='R':
j+=1
#剔除排在当前选手后的第一个对手
if j==n:
s = s[:j]
else:
s = s[:j] + s[j + 1:]
#如果已经没有对手了 本队胜利
else:
return "Dire"
#当前是R队的情况
elif s[i]=='R':
if 'D' in s:
j = i
while j<n and s[j]!='D':
j+=1
if j==len(s):
j=0
while j<i and s[j]!='D':
j+=1
if j == n:
s = s[:j]
else:
s = s[:j] + s[j + 1:]
else:
return "Radiant"
n -= 1
if i==n:
i=0
else:
i=(i+1)%n
if n==1:
if s == 'D':
return "Dire"
elif s == 'R':
return "Radiant"
易错点:
关于 i 怎么自增 要分情况讨论