function longest_substring_without_repeating_characters(input) { var chars = input.split(''); var curr_char; var str = ""; var longest_string = ""; var hash = {}; for (var i = 0; i < chars.length; i++) { curr_char = chars[i]; if (!hash[chars[i]]) { str += curr_char; hash[chars[i]] = {index:i}; } else { if(longest_string.length <= str.length) { longest_string = str; } var prev_dupeIndex = hash[curr_char].index; var str_FromPrevDupe = input.substring(prev_dupeIndex + 1, i); str = str_FromPrevDupe + curr_char; hash = {}; for (var j = prev_dupeIndex + 1; j <= i; j++) { hash[input.charAt(j)] = {index:j}; } } } return longest_string.length > str.length ? longest_string : str; } console.log(longest_substring_without_repeating_characters("google.com")); console.log(longest_substring_without_repeating_characters("example.com"));