牛客题霸 [找到字符串的最长无重复字符子串] C++题解/答案

牛客题霸 [找到字符串的最长无重复字符子串] 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;
    }
};
posted @ 2020-11-16 14:13  回归梦想  阅读(169)  评论(0编辑  收藏  举报