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
- 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.