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 compute all possible states of the string after one valid move.
For example, given s = "++++"
, after one move, it may become one of the following states:
[ "--++", "+--+", "++--" ]
If there is no valid move, return an empty list []
.
1 class Solution { 2 public: 3 vector<string> generatePossibleNextMoves(string s) { 4 vector<string> result; 5 if (s.size() < 2) return result; 6 7 for (int i = 1; i < s.size(); i++) { 8 if (s[i] == '+' && s[i - 1] == '+') { 9 s[i] = s[i - 1] = '-'; 10 result.push_back(s); 11 s[i] = s[i - 1] = '+'; 12 } 13 } 14 return result; 15 } 16 };