标签: 字符串
难度: Easy
标签: 字符串
难度: Easy
运行时间: 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
这个题解的思路是遍历字符串,找到相邻两个位置都是 '+' 的情况,然后将这两个位置替换为 '--',得到一个新的字符串并加入结果列表。最后返回结果列表。
时间复杂度: 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
算法通过遍历字符串的每个位置,直到倒数第二个字符,并检查当前字符和下一个字符是否都是'+'. 这种方法确保了每一对相邻的'+'都被检查到,从第一个字符到倒数第二个字符。因此,该算法没有遗漏任何可能的'++'组合。
如果字符串中只包含'-'或长度小于2,那么在遍历过程中不会找到任何'++'组合,自然也就不会生成任何新的字符串。因此,这种情况下算法会直接返回空列表,没有必要进行特别处理。算法的早期返回条件已经足够处理这种情况。