牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案
题目描述
给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。
题解:
i和j两个指针分别指不重复子串的两端,根据情况各自移动,记录最大值即可
代码:
class Solution {
public:
/** * * @param arr int整型vector the array * @return int整型 */
int maxLength(vector<int>& arr) {
// write code here
if(arr.size()==0) return 0;
vector<int> v(100000);
int sum=0;
int i=0;
int j=0;
while(j<arr.size())
{
if(v[arr[j]]==0)
{
v[arr[j]]=1;
sum=max(sum,j-i+1);
j++;
}
else
{
v[arr[i]]=0;
i++;
}
}
return sum;
}
};