# 3.无重复字符的最长子串

## 问题描述
[3.无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/)

## 解题思路
用`arr[96]`记录每个字符出现的次数，如果字符次数大于1，说明已经包含了重复字符，则要更新`l`，否则递增`r`，并记录最大的子串长度。

## 代码
```cpp
class Solution {
  public:
    int lengthOfLongestSubstring(string s) {
        int arr[96] = {0};
        int res = 0;
        int l = 0;
        for (int r = 0; r < s.size(); r++) {
            arr[s[r] - ' ']++;
            if (arr[s[r] - ' '] > 1) {
                while (l < r && arr[s[r] - ' '] > 1)
                    arr[s[l++] - ' ']--;
            } else {
                res = max(r - l + 1, res);
            }
        }
        return res;
    }
};
```


