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
[]
.Solution:(String)
From i=0 to i=n-2, if there exists two consecutive "++", then it will be one result.
O(n).
Code(C++):
class Solution { public: vector<string> generatePossibleNextMoves(string s) { int n = s.size(); int i = 0; vector<string> res; while(i<n-1){ if(s[i]=='+' && s[i+1]=='+'){ string tmp = s; tmp[i] = '-'; tmp[i+1] = '-'; res.push_back(tmp); } i++; } return res; } };
No comments :
Post a Comment