【Leetcode】3. 无重复字符的最长子串

117 阅读1分钟

题目描述

在这里插入图片描述

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

题解

// 力扣
// 题目与剑指48题相同 https://blog.csdn.net/fisherish/article/details/113500203
// 执行用时:10 ms, 在所有 Java 提交中击败了32.06%的用户
// 内存消耗:38.6 MB, 在所有 Java 提交中击败了48.59%的用户
import java.util.HashSet;
class Solution {
    public int lengthOfLongestSubstring(String s) {
        if (s.length() == 0 || s.length() == 1)
            return s.length();
        char[] strs = s.toCharArray();
        int res = 0;
        HashSet<Character> set = new HashSet<>();
        int left = 0, right = 0;
        while (right < s.length()) {
            System.out.println(res);
            if (set.contains(strs[right])) {
                while (left < right - 1)
                    set.remove(strs[left++]);
            }
            else {
                set.add(strs[right]);
            }
            right++;
            res = Math.max(res, (right - left));
        }
        return res;
    }
}