编写 Python 程序递归删除所有相邻重复项

2024 年 8 月 29 日 | 4 分钟阅读

在本教程中,我们将编写Python程序来递归地删除所有相邻的重复元素。在此问题中,给定一个字符串,我们需要返回一个不包含任何相邻重复元素的输出字符串。让我们通过以下示例来理解。

示例 -

让我们理解下面的例子。

方法 - 1

让我们理解下面的例子。

示例 -

输出

ay
ac

解释 -

在上面的代码中,**remove_adjacent_duplicates()** 函数以字符串作为输入,并从中删除所有相邻的重复项。使用栈来存储非重复字符。我们遍历字符串中的每个字符。

如果栈不为空且当前字符与栈顶元素相同,则表示我们找到了一个重复字符。在这种情况下,我们使用pop()方法从栈中删除栈顶元素。如果当前字符不是重复字符,我们使用append()方法将其压入栈中。

遍历完所有字符后,我们使用''.join(stack)方法将栈转换为字符串并返回结果字符串。

最后,我们提供几个字符串,其中调用了**remove_adjacent_duplicates()** 函数,并打印输出。

方法 - 2

让我们理解另一种方法。

示例 -

输出

mpie
lop

解释 -

remove_adjacent_duplicates()函数以字符串s和字符ch作为输入,并递归地从字符串中删除所有相邻的重复项。

如果字符串的长度小于或等于1,则函数原样返回字符串。

该函数使用while循环遍历字符串中的字符。如果两个相邻字符相同,则找到连续重复字符的范围。然后,函数使用重复字符之后的剩余部分递归地调用自身。

该函数从当前范围中删除连续重复项,并将重复项之后的剩余字符串追加到更新后的字符串中。

如果没有连续重复项,则函数移动到下一个字符。

最后,该函数返回已删除所有相邻重复项的更新后的字符串。

我们提供了两个测试用例,其中remove_adjacent_duplicates()函数使用不同的字符串和字符调用,并打印输出。

方法 - 4

我们可以使用正则表达式来解决这个问题,并运行一个循环来查找长度大于1的字符。让我们通过以下示例来理解。

示例 -

输出

z

解释 -

在上面的代码中,remove()函数使用正则表达式来查找字符串s中连续重复字符的组。它使用re.finditer遍历找到的匹配项,并将它们存储在groups列表中。

然后,它检查每个组的长度,如果长度不大于1,则将其追加到字符串s中。rremove()函数在输入字符串s上重复调用remove函数,直到字符串s的长度保持不变。它在每次迭代之前更新ps以存储s的先前值。

最后,它返回删除所有相邻重复项后的结果字符串。