Longest Substring Without Repeating Characters
public class Solution {
public int longest(String input) {
Map<Character, Integer> ht = new HashMap<>();
int globalMax = 0;
int curMax = 0;
for (int i = 0; i < input.length(); i++){
Character cur = input.charAt(i);
if (!ht.containsKey(cur)){
curMax += 1;
globalMax = Math.max(globalMax, curMax);
ht.put(cur, i);
} else {
int prevIndex = ht.get(cur);
int left = i - curMax; //left end of cur substring
while(left <= prevIndex){
Character removeChar = input.charAt(left);
ht.remove(removeChar);
left += 1;
}
ht.put(cur, i);
curMax = i - prevIndex;
}
}
return globalMax;
}
}
Last updated