你和朋友玩一个叫做「翻转游戏」的游戏,游戏规则:给定一个只有 + 和 - 的字符串。你和朋友轮流将 连续 的两个 “++” 反转成 “–”。 当一方无法进行有效的翻转时便意味着游戏结束,则另一方获胜。
请你写出一个函数,来计算出每个有效操作后,字符串所有的可能状态。
示例:
输入: s = “++++”
输出:
[
“–++”,
“±-+”,
“+±-”
]
注意:如果不存在可能的有效操作,请返回一个空列表 []。
思路:
无脑遍历
注意: 相同数组
的具有相同的引用地址
, 注意重置或者恢复数组
, 以便下一次遍历
我这里采用了修改回来的方法.
题解:
class Solution {
public List<String> generatePossibleNextMoves(String s) {
ArrayList<String> result=new ArrayList();
char[] arr = s.toCharArray();
for(int i=0; i<arr.length-1; i++){
if(arr[i]=='+' && arr[i+1]=='+'){
arr[i]=arr[i+1]='-';
result.add(new String(arr));
arr[i]=arr[i+1]='+';
}
}
return result;
}
}