题目描述
解题思路
(确认过眼神 是我解不出的题…记录学习)
class Solution(object):
def predictPartyVictory(self, senate):
"""
:type senate: str
:rtype: str
"""
Rnum=0 #R的总人数
Dnum=0 #D的总数
CurBanR=0 #当前被ban的R的个数
CurBanD=0 # 当前被ban的D的个数
totalR=0 #被ban的R的总数
totalD=0 #被ban的D的总数
s=[]
for x in senate:
s.append(x) #将str内容放入list中
flag=True #设置flag 第一轮用来计数 之后的不许计数
while(True):
for i in range (len(s)):
cur=s[i]
#如果是R
if cur=='R':
#并且是第一轮
if flag:
Rnum+=1 #Rnum+1
if CurBanR==0: #如果CurbanR==0 说明当前的R没有被ban 那么可以banD
CurBanD+=1
totalD+=1
if(totalD==Dnum and flag==False): return 'Radiant'
else:
CurBanR-=1 #如果CurBanR>0说明当前R已经被ban了 相当于被kill了 设置为r 没有任何权利
s[i]='r'
elif cur=='D':
if flag:
Dnum+=1
if CurBanD==0:
CurBanR+=1
totalR+=1
if(totalR==Rnum and flag==False):return "Dire"
else:
CurBanD-=1
s [i]='d'
flag=False
if (totalR>=Rnum): #最后比较 被ban的总数和R的总数
print("r")
return "Dire"
if(totalD>=Dnum):
print("d")
return "Radiant"
senate="RD"
Solution().predictPartyVictory(senate)