diff --git a/java/3-longest-substring-without-repeating-characters.java b/java/3-longest-substring-without-repeating-characters.java new file mode 100644 index 000000000..31d8efa3d --- /dev/null +++ b/java/3-longest-substring-without-repeating-characters.java @@ -0,0 +1,24 @@ +class Solution { + public int lengthOfLongestSubstring(String s) { + if (s == null || s.length() == 0) + return 0; + + int start = 0, maxLen = 0; + Set currentWindowSet = new HashSet<>(); + + for (int end = 0 ; end < s.length() ; end++) { + char currentChar = s.charAt(end); + if (currentWindowSet.contains(currentChar)) { + while (s.charAt(start) != currentChar) { + currentWindowSet.remove(s.charAt(start++)); + } + start++; + } else { + currentWindowSet.add(currentChar); + maxLen = Math.max(maxLen, currentWindowSet.size()); + } + } + + return maxLen; + } +}