293. Flip Game

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.

Example:

```Input: `s = "++++"`
Output:
[
"--++",
"+--+",
"++--"
]
```

Note: If there is no valid move, return an empty list `[]`.

293. Flip Game
``````struct Solution;

impl Solution {
fn generate_possible_next_moves(s: String) -> Vec<String> {
let mut res: Vec<String> = vec![];
let n = s.len();
for i in 1..n {
if &s[i - 1..=i] == "++" {
res.push(format!("{}{}{}", &s[0..i - 1], "--", &s[i + 1..]));
}
}
res
}
}

#[test]
fn test() {
let s = "++++".to_string();
let res: Vec<String> = vec_string!["--++", "+--+", "++--"];
assert_eq!(Solution::generate_possible_next_moves(s), res);
}
``````