class Solution {
    public int lengthOfLongestSubstring(String s) {
        char[] chars = s.toCharArray();
        int n = chars.length;
        List<Character> list = new ArrayList();
        int l = 0, r = 0;
        int max = 0;
        // 滑动窗口
        while (r < n) {
            if (!list.contains(chars[r])) {
                // 表中没有重复的,添加并更新最大长度,继续移动右指针
                list.add(chars[r]);
                max = Math.max(max, list.size());
                r++;
            } else {
                // 表中有重复的,删除左指针上的元素,并移动左指针
                list.remove((Character) chars[l]);
                l++;
            }
        }
        return max;
    }
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐