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