您的位置:首页 > 其它

Flip Game I && II

2016-07-30 01:17 316 查看
Flip Game I

Problem Description:

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
[]
.

public List<String> generatePossibleNextMoves(String s) {
List<String> list = new ArrayList<String>();

if (s == null || s.length() < 2) return list;

for (int i = -1; (i = s.indexOf("++", i + 1)) >= 0;) {
list.add(s.substring(0, i) + "--" + s.substring(i + 2));
}
return list;
}


Flip Game II

Problem Description:

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 determine if the starting player can guarantee a win.

For example, given
s = "++++"
, return true. The starting player can guarantee a win by flipping the middle
"++"
to become
"+--+"
.

Code is from: https://discuss.leetcode.com/topic/27287/short-java-ruby?show=64350
public boolean canWin(String s) {
for (int i=-1; (i = s.indexOf("++", i+1)) >= 0; )
if (!canWin(s.substring(0, i) + "-" + s.substring(i + 2))) return true;
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: