Longest Substring Without Repeating Characters

 Given a string s, find the length of the longest substring without duplicate characters.


 


Example 1:


Input: s = "abcabcbb"

Output: 3

Explanation: The answer is "abc", with the length of 3.

Example 2:


Input: s = "bbbbb"

Output: 1

Explanation: The answer is "b", with the length of 1.

Example 3:


Input: s = "pwwkew"

Output: 3

Explanation: The answer is "wke", with the length of 3.

Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.


class Solution {
    public int lengthOfLongestSubstring(String s) {
        int start = 0;
        int maxLength = 0;
        int n = s.length();

        HashSet<Character> set = new HashSet<>();

        for (int end = 0; end < n; end++) {
            char ch = s.charAt(end);

            // If character is already in the set, remove characters from the start
            while (set.contains(ch)) {
                set.remove(s.charAt(start));
                start++;
            }

            set.add(ch);
            maxLength = Math.max(maxLength, end - start + 1);
        }

        return maxLength;
    }
}

Comments

Popular posts from this blog

Two Sum II - Input Array Is Sorted

Comparable Vs. Comparator in Java

Increasing Triplet Subsequence