int lengthOfLongestSubstring(char* s) { int length = strlen(s); int max_len = 0; for (int i = 0; i < length; i++) { int hash_tab[256] = {0}; int count = 0; for (int j = i; j < length; j++) { if (hash_tab[s[j]] == 1) break; else { hash_tab[s[j]] = 1; count++; } } if (count > max_len) max_len = count; } return max_len;}
O(n) - Sliding Window
int lengthOfLongestSubstring(char* s) { int start = 0; int len = strlen(s); int max_len = 0; int hashtab[256]; memset(hashtab, -1, sizeof(hashtab)); for (int i = 0; i < len; i++) { if (hashtab[s[i]] >= start) start = hashtab[s[i]] + 1; hashtab[s[i]] = i; int count = i - start + 1; if (count > max_len) max_len = count; } return max_len;}