649. Dota2 参议院 解题思路 R = true 表示循环结束之后 字符串仍然存在 Rflag > 0 说明R在D之前出现 R可以消灭Dflag < 0 说明D在R之前出现 D 可以消灭R一旦其中有一个为false 说明只剩下R 或者D 那么就可以决定谁获胜遍历字符串 如果当前字符是R 判断flag 如果flag < 0 然后消灭R 如果不是 那么R = true 表示字符串存在R class Solution {public String predictPartyVictory(String senate) {// R = true 表示循环结束之后 字符串仍然存在 RBoolean R = true;Boolean D = true;// flag > 0 说明R在D之前出现 R可以消灭D// flag < 0 说明D在R之前出现 D 可以消灭Rint flag = 0;byte[] senates = senate.getBytes();// 一旦其中有一个为false 说明只剩下R 或者D 那么就可以决定谁获胜while(R && D){R = false;D = false;for(int i = 0; i < senates.length; i++){if(senates[i] == 'R'){// 如果当前字符串为R 判断flagif(flag < 0){// 消灭Rsenates[i] = 0; }else{R = true;}flag++;}if(senates[i] == 'D'){if(flag > 0){// 说明R在D之前出现 R可以消灭Dsenates[i] = 0;}else{D = true;}flag--;}}}// 循环结束之后 R D只能有一个为Truereturn R == true ? "Radiant":"Dire";} }