牛客题霸 [找到字符串的最长无重复字符子串] 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;
    }
};