C++ Leetcode:为什么**提交**和**运行代码时**字符串类**的``at``方法的行为不同**
我正在做一个关于leetcode的问题。此问题的描述如下: 给定一个字符串s,查找最长子字符串t的长度,该子字符串最多包含2个不同字符 例1: 例2: 在使用at方法之前,我试着做了一些比较 因为所有的输入都必须是有效的 我的问题是,对于InputAAC,我单击了RunCode按钮,它工作正常C++ Leetcode:为什么**提交**和**运行代码时**字符串类**的``at``方法的行为不同**,c++,C++,我正在做一个关于leetcode的问题。此问题的描述如下: 给定一个字符串s,查找最长子字符串t的长度,该子字符串最多包含2个不同字符 例1: 例2: 在使用at方法之前,我试着做了一些比较 因为所有的输入都必须是有效的 我的问题是,对于InputAAC,我单击了RunCode按钮,它工作正常 但是,当我单击Submit时,它将失败。事实上,我多次碰到这个问题。我只是想知道这是否是一个编译器问题?您未能初始化变量计数,因此您的程序具有未定义的行为。您提供的链接需要一个帐户如何失败?编译错误?减速
但是,当我单击Submit时,它将失败。事实上,我多次碰到这个问题。我只是想知道这是否是一个编译器问题?您未能初始化变量计数,因此您的程序具有未定义的行为。您提供的链接需要一个帐户如何失败?编译错误?减速?错误信息是什么?run和submit之间的区别在于测试用例的数量和复杂性。前者只测试一些简单的情况。后者测试复杂的情况。提示:初始化变量。@fdan对不起,我刚刚注意到这个问题只对高级用户开放,我只是得到了它的快照。希望有帮助。请在问题中插入所有必要的信息作为文本。不要使用链接或图片
Input: "eceba"
Output: 3
Explanation: t is "ece" which its length is 3.
Input: "ccaabbb"
Output: 5
Explanation: t is "aabbb" which its length is 5.
class Solution {
public:
int lengthOfLongestSubstringTwoDistinct(string s)
{
if (!s.length() || s.length() == 1 || s.length() == 2)
return s.length();
unsigned int left = 0, right = 0; // Use sliding window
map<char, int> mp;
int count;
int len = s.length();
int res = 1; // default answer
while (right < len) {
if (right < len && (mp.find(s.at(right)) == mp.end() || mp[s.at(right)] == 0)) {
count++;
}
mp[s.at(right)]++;
right++;
if (count > 2) // if count is out of scope, just undo last action
{
count--;
right--;
if (right < len)
mp[s.at(right)]--;
if (right - left > res) {
res = right - left;
}
while (count == 2) {
mp[s.at(left)]--;
if (mp[s.at(left)] == 0)
count--;
left++;
}
}
}
return right - left > res ? right - left : res;
}
};