Exemple #1
0
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;
}