leetcode_293 翻转游戏

160 阅读1分钟

要求

你和朋友玩一个叫做「翻转游戏」的游戏。游戏规则如下:

给你一个字符串 currentState ,其中只含 '+' 和 '-' 。你和朋友轮流将 连续 的两个 "++" 反转成 "--" 。当一方无法进行有效的翻转时便意味着游戏结束,则另一方获胜。

计算并返回 一次有效操作 后,字符串 currentState 所有的可能状态,返回结果可以按 任意顺序 排列。如果不存在可能的有效操作,请返回一个空列表 [] 。

示例 1:

输入:currentState = "++++"
输出:["--++","+--+","++--"]

示例 2:

输入:currentState = "+"
输出:[]

核心代码

class Solution:
    def generatePossibleNextMoves(self, currentState: str) -> List[str]:
        res = []
        for i in range(len(currentState) - 1):
            if currentState[i:i + 2] == "++":
                res.append(currentState[:i] + "--" + currentState[i + 2:])
        return res

image.png

解题思路:我们从头开始循,当我们遇到双+的时候,我们使用--替换,替换完成的放到结果字典中,比较简单。