题解 | #找到字符串的最长无重复字符子串#(双指针&map)

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

http://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4

class Solution {
public:
/*
i - j 之间为连续不重复数
vector<int> v 标记i - j之间元素是否存在。
初始 i=j=0 都放在数组首部 从i 出 j进
j++ 当v 中不存在arr[j]
i-- 当arr[j]存在 需要从i 出数  i++且v[arr[i]] = 0 直到 arr[i] == arr[j] 使得v[arr[j]] = 0时,j入队 
每次进数记录最大值
*/
class Solution {
public:
    int maxLength(vector<int>& arr) {
        int len = arr.size();
        if(len == 0) return 0;
        vector<int> v(100000);
        int res = 0, i = 0, j = 0;
        while(j < len){
            if(v[arr[j]] == 0){
                v[arr[j]] = 1;
                res = max(res, j-i+1);
                j++;
            }else {
                v[arr[i]] = 0; i++;
            }
        }
        return res;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务