293.Flip Game
Tags: [string], [two_pointer]
Com: {g}
Link: https://leetcode.com/problems/flip-game/\#/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, givens = "++++"
, after one move, it may become one of the following states:
[
"--++",
"+--+",
"++--"
]
If there is no valid move, return an empty list[]
.
Solution: Two Pointer
class Solution(object):
def generatePossibleNextMoves(self, s):
"""
:type s: str
:rtype: List[str]
"""
if not s or len(s) < 2:
return []
chars = list(s)
result = []
for i in xrange(len(chars) - 1):
if chars[i] == chars[i + 1] == '+':
chars[i], chars[i + 1] = '-', '-'
result.append(''.join(chars))
chars[i], chars[i + 1] = '+', '+'
return result
Note:
- Time complexity = O(n), n is the length of the given string.