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

题目

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

代码

class Solution {
    public int lengthOfLongestSubstring(String s) {
        char[] arr = s.toCharArray();  // 转换成 char[] 加快效率(忽略带来的空间消耗)
        int n = arr.length, ans = 0, left = 0;
        boolean[] has = new boolean[128];  // 也可以用 HashSet,这里为了效率用的数组
        for (int right = 0; right < n; right++) {
            char c = arr[right];
            while (has[c])  // 加入 c 后,窗口内会有重复元素
                has[arr[left++]] = false;
            has[c] = true;
            ans = Math.max(ans, right - left + 1); // 更新窗口长度最大值
        }
        return ans;
    }
}

LeetCode Hot100 3.无重复字符的最长子串_第1张图片

你可能感兴趣的:(算法刷题-滑动窗口,leetcode,算法,职场和发展)