思路
1.字符串查找重復(fù)字符
2.有重復(fù)字符則處理重復(fù)字符之間的數(shù)據(jù)并記錄長度
代碼
int lengthOfLongestSubstring(char* s) {
int maxlen = 0,currlen = 0;
int table[128], i, j, start = 0;
memset(table, 0, sizeof(table));
for (i = 0; s[i] != '\0'; ++i){
if( (++table[s[i]]) == 2 ){//判斷重復(fù)
if (currlen > maxlen){
maxlen = currlen;//記錄最長長度
}
for(j = start; j < i; ++j){ //*start記錄重復(fù)的字符后一個位置
if (s[j] == s[i]){
table[s[j]] = 1;
start = j+1;
break;
}else{
//清空數(shù)組,重置記錄長度
--currlen;
table[s[j]] = 0;
}
}
}else{
++currlen;//無重復(fù)記錄長度自加
}
}
if (currlen > maxlen){
maxlen = currlen;
}
return maxlen;
}