ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Leetcode 2957. Remove Adjacent Almost-Equal Characters

2026/9/21 10:16:33 拓冰建站 浏览量
Leetcode 2957. Remove Adjacent Almost-Equal Characters
  • Leetcode 2957. Remove Adjacent Almost-Equal Characters
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:2957. Remove Adjacent Almost-Equal Characters

1. 解题思路

这一题其实不是很想放上来的,因为其实真的很简单,但是我惊讶地发现当前提交的算法实现耗时都很高,都在3000ms以上,然后我这个只有38ms,就很懵逼……

我的思路一个贪婪算法,找到所有连续的almost equal的substring,他们所有的都必须要进行改变,而要改变一个长度为n的substring,所需要的最少变换次数就是 ⌊ n 2 ⌋ \lfloor \frac{n}{2} \rfloor 2n。由此,我们就可以直接得到答案了。

2. 代码实现

给出python代码实现如下:

class Solution:def removeAlmostEqualCharacters(self, word: str) -> int:ans, cnt = 0, 0pre = "."for ch in word:if abs(ord(ch) - ord(pre)) <= 1:cnt += 1else:ans += cnt // 2cnt = 1pre = chans += cnt // 2return ans

提交代码评测得到:耗时38ms,占用内存16.3MB。