Skip to content

Instantly share code, notes, and snippets.

@cangoal
Created April 13, 2016 04:46
Show Gist options
  • Select an option

  • Save cangoal/f2d0c5eb3cd870dc41f04e004f1f38a5 to your computer and use it in GitHub Desktop.

Select an option

Save cangoal/f2d0c5eb3cd870dc41f04e004f1f38a5 to your computer and use it in GitHub Desktop.
LeetCode - Flip Game II
// You are playing the following Flip Game with your friend: Given a string that contains only these two characters: + and -, you and your friend take turns to flip two consecutive "++" into "--". The game ends when a person can no longer make a move and therefore the other person will be the winner.
// Write a function to determine if the starting player can guarantee a win.
// For example, given s = "++++", return true. The starting player can guarantee a win by flipping the middle "++" to become "+--+".
// Follow up:
// Derive your algorithm's runtime complexity.
public boolean canWin(String s) {
if(s == null || s.length() < 2) return false;
for (int i = 0; i < s.length() - 1; i++) {
if (s.startsWith("++", i)) {
String str = s.substring(0, i) + "--" + s.substring(i + 2);
if(!canWin(str)) return true;
}
}
return false;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment