public static void main(String[] args) {
String str = "sadsfdkfkmfksdmfkdsmflaflkdkmmlkdm";
lengthOfLongestSubstring2(str);
System.out.println("================================================");
lengthOfLongestSubstring(str);
}
public static int lengthOfLongestSubstring(String s) {
LinkedList<Character> list = new LinkedList<>();
int size = s.length();
int ri =0,
maxsize =0;
for (int i = 0; i < size; i++) {
if(i !=0 ){
list.removeFirst();
}
while((ri < size) && !list.contains(s.charAt(ri))){
list.add(s.charAt(ri)) ;
ri++ ;
}
maxsize = Math.max(maxsize, ri-i);
System.out.println(s.substring(i,ri));
}
System.out.println(maxsize);
return maxsize;
}
public static int lengthOfLongestSubstring2(String s) {
int n = s.length(), ans = 0;
Map<Character, Integer> map = new HashMap<>();
int lindex = 0;
int rindex = 0;
for (;rindex < n; rindex++) {
char curr = s.charAt(rindex);
if (map.containsKey(curr)) {
lindex = Math.max(map.get(curr), lindex);
}
ans = Math.max(ans, rindex - lindex + 1);
System.out.println(s.substring(lindex,rindex+1));
map.put(curr, rindex + 1);
}
return ans;
}