三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

DeepSeek LeetCode 3803. 统计残差前缀 C++实现

DeepSeek    LeetCode 3803. 统计残差前缀 C++实现

```cpp
class Solution {
public:
int residuePrefixes(string s) {
bool seen[26] = {false}; // 记录当前前缀中出现的不同字符
int distinctCount = 0; // 当前前缀中不同字符的数量
int ans = 0;

for (int i = 0; i < s.size(); ++i) {
int idx = s[i] - 'a';
if (!seen[idx]) {
seen[idx] = true;
++distinctCount;
}

// 检查是否满足条件:distinctCount == len(prefix) % 3
// 前缀长度是 i + 1,模3结果是 (i + 1) % 3
if (distinctCount == (i + 1) % 3) {
++ans;
}
}

return ans;
}
};
```

核心思路:模拟与计数

这道题只需要按题意模拟即可。关键是同时维护两个信息:当前前缀的长度和其中的不同字符数量。

· 维护不同字符数:使用一个大小为26的布尔数组seen记录字符是否出现过。遍历时,每遇到一个新字符,就将distinctCount加1。
· 检查条件:对于长度为i+1的前缀,计算(i+1) % 3,然后判断是否与当前的distinctCount相等。如果相等,答案加1。

复杂度分析:时间复杂度O(n),空间复杂度O(1)。

← 返回列表