- [Leetcode 3694. Distinct Points Reachable After Substring Removal](#Leetcode 3694. Distinct Points Reachable After Substring Removal)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题思路上就是一个滑动窗口的思路,我们首先计算出终点的位置,然后考察每一个连续长为 k k k的窗口的位移改变量,然后减去对应的改动量即可。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def distinctPoints(self, s: str, k: int) -> int:
mapping = {"U": [0, 1], "D": [0, -1], "L": [-1, 0], "R": [1, 0]}
cord = [0, 0]
for ch in s:
cord = [x+d for x, d in zip(cord, mapping[ch])]
ans = set()
delta = [0, 0]
for i, ch in enumerate(s):
delta = [x+d for x, d in zip(delta, mapping[ch])]
if i-k >= 0:
delta = [x-d for x, d in zip(delta, mapping[s[i-k]])]
if i >= k-1:
ans.add((cord[0]-delta[0], cord[1]-delta[1]))
return len(ans)
提交代码评测得到:耗时1447ms,占用内存26.8MB。