From f7990b703ba835e0e624f8ad3d2bbad14a552b0e Mon Sep 17 00:00:00 2001 From: jerryfishcode <91447694+jerryfishcode@users.noreply.github.com> Date: Mon, 27 Sep 2021 12:39:55 +0800 Subject: [PATCH] =?UTF-8?q?649.Dota2=E5=8F=82=E8=AE=AE=E9=99=A2=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9EJavaScript=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0649.Dota2参议院.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/problems/0649.Dota2参议院.md b/problems/0649.Dota2参议院.md index e2900824..cda5dd95 100644 --- a/problems/0649.Dota2参议院.md +++ b/problems/0649.Dota2参议院.md @@ -219,6 +219,31 @@ func predictPartyVictory(senateStr string) string { ## JavaScript ```js +var predictPartyVictory = function(senateStr) { + // R = true表示本轮循环结束后,字符串里依然有R;D同理。 + let R = true, D = true; + // 当flag大于0时,R在D前出现,R可以消灭D。当flag小于0时,D在R前出现,D可以消灭R + let flag = 0; + let senate = senateStr.split(''); + while(R && D){ // 一旦R或者D为false,就结束循环,说明本轮结束后只剩下R或者D了 + R = false; + D = false; + for(let i = 0; i < senate.length; i++){ + if(senate[i] === 'R'){ + if(flag < 0) senate[i] = 0;// 消灭R,R此时为false + else R = true;// 如果没被消灭,本轮循环结束有R + flag++; + } + if(senate[i] === 'D'){ + if(flag > 0) senate[i] = 0; + else D = true; + flag--; + } + } + } + // 循环结束之后,R和D只能有一个为true + return R ? "Radiant" : "Dire"; +}; ``` -----------------------