假设我们有一个包含大小写英文字母的字符串 s。我们将认为一个字符串是一个没有任何两个相邻字符 s[i] 和 s[i + 1] 的好字符串,其中 -
0 <= i <= s 的大小 - 2
s[i] 是小写的,而 s[i + 1] 是相同的字母,但大写,反之亦然。
要将字符串转换为好字符串,我们可以选择两个相邻的使字符串变坏的字符并将其删除。我们将继续这个过程,直到字符串变好(空字符串也可以是好的)。我们必须在做好后找到字符串。
因此,如果输入类似于 s = "popPpulaBbr",那么输出将是 "popular",因为首先删除 "p P " 或 "P p " 并删除 "Bb"。
让我们看看以下实现以获得更好的理解 -
def solve(s): res = [] for ch in s: if res and res[-1] != ch and res[-1].lower() == ch.lower(): res.pop() else: res.append(ch) return ''.join(res) s = "popPpulaBbr" print(solve(s))
"popPpulaBbr"输出结果
popular