翻转游戏

Submission

运行时间: 20 ms

内存: 0.0 MB

class Solution:
    def generatePossibleNextMoves(self, s: str) -> List[str]:
        if not s or len(s) < 2:
            return []
        
        res = []
        n = len(s)
        
        for i in range(n - 1):
            if s[i] == '+' and s[i + 1] == '+':
                res.append(s[:i] + '--' + s[i + 2:])
        
        return res

Explain

这个题解的思路是遍历字符串,找到相邻两个位置都是 '+' 的情况,然后将这两个位置替换为 '--',得到一个新的字符串并加入结果列表。最后返回结果列表。

时间复杂度: O(n)

空间复杂度: O(n)

class Solution:
    def generatePossibleNextMoves(self, s: str) -> List[str]:
        # 如果字符串为空或长度小于 2,直接返回空列表
        if not s or len(s) < 2:
            return []
        
        res = []
        n = len(s)
        
        # 遍历字符串,找到相邻两个位置都是 '+' 的情况
        for i in range(n - 1):
            if s[i] == '+' and s[i + 1] == '+':
                # 将相邻两个 '+' 替换为 '--',得到新字符串并加入结果列表
                res.append(s[:i] + '--' + s[i + 2:])
        
        return res

Explore

算法通过遍历字符串的每个位置,直到倒数第二个字符,并检查当前字符和下一个字符是否都是'+'. 这种方法确保了每一对相邻的'+'都被检查到,从第一个字符到倒数第二个字符。因此,该算法没有遗漏任何可能的'++'组合。

如果字符串中只包含'-'或长度小于2,那么在遍历过程中不会找到任何'++'组合,自然也就不会生成任何新的字符串。因此,这种情况下算法会直接返回空列表,没有必要进行特别处理。算法的早期返回条件已经足够处理这种情况。