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