int lengthOfLongestSubstring(char* s) { int hash[256]; int i = 0; int len = 0; int max = 0; resetHash(hash); while(s[i] != '\0') { if(hash[s[i]] != -1) { i = hash[s[i]] + 1; len = 0; resetHash(hash); } else { hash[s[i]] = i; len ++; i++; max = len > max ? len : max; } } return max; }
int findLongestSubstring(char* inp, int* start, int* end) { int len = strlen(inp); int i = 0, max = 0, curStart = 0, curLen = 0; int curcharIndex; int hash[26]; resetHash(hash); for(i=0; i<len; ) { curcharIndex = inp[i]-'a'; if (hash[curcharIndex] == -1) { hash[curcharIndex] = i; curLen++; if (curLen > max) { max = curLen; *start = curStart; *end = i; } i++; } else { i = hash[curcharIndex] + 1; resetHash(hash); curLen = 0; curStart = i; } } return max; }