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 twoconsecutive "++"
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.
解题思路:
backtracking
Java code
public class Solution { public boolean canWin(String s) { for(int i = 0; i < s.length()-1; i++){ if(s.charAt(i) == ‘+‘ && s.charAt(i+1) == ‘+‘ && !canWin(s.substring(0,i)+"--" + s.substring(i+2))){ return true; } } return false; } }
Reference:
1. https://leetcode.com/discuss/64330/4-line-java-solution
2. https://leetcode.com/discuss/64357/memoization-3150ms-130ms-44ms-python
文章来自:http://www.cnblogs.com/anne-vista/p/4886786.html