这个错误是由于整数溢出导致的。在第17行中,对变量 right
进行了自增操作,可能导致 right
超出了 int
类型的表示范围。
为了解决这个问题,可以将 left
、right
和 maxLen
的类型改为 long long
来避免溢出。
修正后的代码如下:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = s.size();
int left = 0;
int maxLen = 0;
unordered_set<char> charSet;
for (int right = 0; right < len; right++) {
while (charSet.count(s[right]) > 0) {
charSet.erase(s[left]);
left++;
}
charSet.insert(s[right]);
maxLen = max(maxLen, right - left + 1);
}
return maxLen;
}
};
这样修改后,代码应该能够避免整数溢出问题,并正确计算最长无重复子串的长度。
内容由零声教学AI助手提供,问题来源于学员提问