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 []
.
Rust Solution
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);
}
Having problems with this solution? Click here to submit an issue on github.