You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode Minimum Window Substring(最小窗口子串)代码错误排查

错误原因分析

1. 合法窗口判断逻辑错误

你实现的check_map函数要求窗口字符计数和模式串计数完全相等,不符合题目要求。题目仅要求窗口包含t的所有字符(含重复项),也就是窗口对应字符的计数大于等于t的计数即可,不需要完全相等。
比如当窗口内有2个'A',而t只需要1个'A'时,当前窗口仍然是合法的,但你的判断逻辑会直接返回false,导致内层while循环提前终止,无法继续收缩左边界找到更小的窗口,这也是你第一个测试用例得到ADOBEC而不是更短的BANC的核心原因。

修正方案:将check_map函数中的判断条件修改为:

if(strr[data.first] < data.second)
  return false; 

2. substr参数使用错误

C++中std::string::substr的第二个参数是要截取的子串长度,不是子串的结束下标。你当前传入的end+1仅在start=0时刚好得到正确长度,当start不为0时,截取的子串长度会远大于预期,导致即使找到了正确的窗口边界,存储到ans里的也是错误的长字符串。

修正方案:将截取子串的代码修改为:

ans = s.substr(start, end - start + 1);

补充说明

如果编译时提示INT_MAX未定义,需要额外引入头文件#include <climits>。


内容的提问来源于stack exchange,提问作者Dipesh Kurasau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:36:03