Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Longest Substring Without Repeating Characters - https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
- class Solution {
- // Brute Force
- // Time Complexity: O(n^2)
- // Space Complexity: O(m) where m is length of longest substring
- // public int lengthOfLongestSubstring(String s) {
- // int maxLength = 0;
- // for(int i = 0; i < s.length(); i++) {
- // int len = 1;
- // Set<Character> set = new HashSet<>();
- // set.add(s.charAt(i));
- // for(int j = i+1; j < s.length(); j++) {
- // if (set.contains(s.charAt(j))) {
- // break;
- // }
- // else {
- // set.add(s.charAt(j));
- // len++;
- // }
- // }
- // maxLength = Math.max(len, maxLength);
- // }
- // return maxLength;
- // }
- // Sliding Window
- // Time Complexity: O(n)
- // Space Complexity: O(m) where m is length of longest substring
- // public int lengthOfLongestSubstring(String s) {
- // int maxLength = 0;
- // int left = 0, right = 0;
- // Set<Character> set = new HashSet<>();
- // for(int i = 0; i < s.length(); i++) {
- // while(set.contains(s.charAt(i))) {
- // set.remove(s.charAt(left));
- // left++;
- // }
- // set.add(s.charAt(i));
- // maxLength = Math.max(right - left + 1, maxLength);
- // right++;
- // }
- // return maxLength;
- // }
- // Sliding Window (Optimised)
- // Time Complexity: O(n)
- // Space Complexity: O(m) where m is length of longest substring
- public int lengthOfLongestSubstring(String s) {
- int maxLength = 0;
- int left = 0;
- Map<Character, Integer> map = new HashMap<>();
- for(int right = 0; right < s.length(); right++) {
- if(map.containsKey(s.charAt(right))) {
- left = Math.max(map.get(s.charAt(right)) + 1, left);
- }
- map.put(s.charAt(right), right);
- maxLength = Math.max(right - left + 1, maxLength);
- }
- return maxLength;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment