本文主要是介绍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。
这篇关于Leetcode 2957. Remove Adjacent Almost-Equal Characters的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!