LeetCode 3 无重复字符的最长字符串 c语言

int lengthOfLongestSubstring(char* s) {
    int maxlen = 0, currlen = 0;
    int table[128], i, j, start = 0;
    memset(table, 0, sizeof(table));   //将table后面sizeof(table)个字节清零
    for (i = 0; s[i] != '\0'; ++i)
    {
        int num =  ++table[s[i]];      //128个ASCII码 table[a]即table[98]
        if(num == 2)
        {
            if (currlen > maxlen){
                maxlen = currlen;
            }
            for(j = start; j < i; ++j){
                if (s[j] == s[i]){
                    table[s[j]] = 1;
                    start = j+1;
                    break;
                }
                else
                {
                    --currlen;
                    table[s[j]] = 0;
                }
            }
        }
        else
            ++currlen;
    }
    
    if (currlen > maxlen)
        maxlen = currlen;
 
    return maxlen;
}

你可能感兴趣的:(LeetCode 3 无重复字符的最长字符串 c语言)