找到字符串的最长无重复字符子串

给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。

1、只做一次循环,每次保证两个指针之间都没有重复的值。
2、当right指针走到相同的数的时候(n[arr[right]] > 0),right停下;
3、left++,left往右移动,移动到被重复的数字的后一位时(把被重复的数字的计数器清零后,再往后走一步),停下,保证了两个指针之间的数字是没有被重复的。
4、right就能继续往后走了。
5、记录每个片段的最大值(res = res > right - left + 1 ? res : right - left +1)。

int maxLength(vector<int>& arr) {
    // write code here
    int n[100000] = { 0 };
    int left = 0;
    int right = 0;
    int res = 0;
    int arrLen = arr.size();
    while (right < arrLen) {
        if (n[arr[right]] > 0) {//计数器
            n[arr[left]] = 0;
            left++;//左指针
        }
        else {
            n[arr[right]] = 1;
            res = res > right - left + 1 ? res : right - left + 1;
            right++;
        }
    }
    return res;
}

(ps:copy的一个大佬的代码,忘记记下出处了,😢);