LeetCode算法第三题

Description

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given “abcabcbb“==, the answer is “abc“, which the length is 3.

Given “bbbbb“, the answer is “b“, with the length of 1.

Given “pwwkew“, the answer is “wke“, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.

Code

int isUnique(char* s){
    for(int i=0;i<strlen(s);i++){
        for(int j=i+1;j<strlen(s);j++){
            if(s[i]==s[j]){
                return -1;
                break;
            }
        }
    }
    return 1;
}

int lengthOfLongestSubstring(char* s) {
    int l = strlen(s);
    char *r = (char*)calloc(l,sizeof(char));
    int g_max = 0;
    for(int a=0; a<strlen(s); a++){
        r[a] = s[a];
        int b = 1;
        while(b<(l-a)){
            r[a+b]=s[a+b];
            if (1 == isUnique(r+a)){
                b ++;
            }
            else
                break;
        }
        g_max = (g_max > b)? g_max : b;
    }
    return g_max;
}

Conclusion

  1. How to get the result in C with a time complexity of O(n) ?
    Even we know that sliding window is the best way to traverse, but how to decrease the time complexity is still a problem.

猜你喜欢

转载自blog.csdn.net/gaussrieman123/article/details/78500056