293. 翻转游戏

题目

你和朋友玩一个叫做「翻转游戏」的游戏,游戏规则:给定一个只有 + 和 - 的字符串。你和朋友轮流将 连续 的两个 “++” 反转成 “–”。 当一方无法进行有效的翻转时便意味着游戏结束,则另一方获胜。

请你写出一个函数,来计算出每个有效操作后,字符串所有的可能状态

示例 1:

1
2
3
4
5
6
7
输入: s = "++++"
输出:
[
"--++",
"+--+",
"++--"
]

注意:

如果不存在可能的有效操作,请返回一个空列表 []

解法

解法一:

遍历,翻转

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public List<String> generatePossibleNextMoves(String s) {
List<String> result = new ArrayList<>();
char[] chars = s.toCharArray();
for (int i = 0;i < chars.length - 1;i++) {
if (chars[i] == '+' && chars[i + 1] == '+') {
chars[i] = '-';
chars[i + 1] = '-';
result.add(new String(chars));
chars[i] = '+';
chars[i + 1] = '+';
}
}
return result;
}
0%