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.

results matching ""

    No results matching ""