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 []
.
思路:从左到右换两个减号。注意要判断原string是否为加号,如果不是减号就不变。用substring会比较简单。
public class Solution { public List<String> generatePossibleNextMoves(String s) { List<String> res=new ArrayList<>(); if(s==null||s.length()<=1) { return res; } int i=0; int j=1; while(j<s.length()) { if(s.charAt(i)=='+'&&s.charAt(j)=='+') { String m=s.substring(0,i)+"--"+s.substring(j+1); res.add(m); } i++; j++; } return res; } }