中等

9.6K

相关企业

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

示例 1:

输入:s = "abcabcbb"
输出:3
解释: 因为无重复字符的最长子串是"abc",所以其长度为 3。

示例 2:

输入:s = "bbbbb"
输出:1
解释:因为无重复字符的最长子串是"b",所以其长度为 1。

示例 3:

输入:s = "pwwkew"
输出:3
解释:因为无重复字符的最长子串是"wke",所以其长度为 3。
     请注意,你的答案必须是子串的长度,"pwke" 是一个子序列,不是子串。

提示:

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int n = s.length();
        int left = 0;
        int right = 0;
        int result = 0;
        Set<Character>set = new HashSet<>();
        while(right < n){
            char current = s.charAt(right);
            if(!set.contains(current)){
                set.add(current);
                right++;
                result = Math.max(result, set.size());
            } else {
                set.remove(s.charAt(left));
                left++;
            }
        }
        return result;
    }
}