基本思想:
遍历字符串,使用一个128位的数组存放遍历过的字符,字符值为数组下标,相应元素赋值为1.如果遍历到已经在数组中为1的字符,即有重复的,此时设置最大值,并将数组清空,再次开始遍历,代码如下:
int lengthOfLongestSubstring(char* s) {
int array[128] = {0};
int index = 0;
int length = 0;
int count = 0;
int max = 0;
if(s == NULL)
return 0;
length = strlen(s);
for(index = 0; index < length; index++){
for(int j = index; j < length; j++){
if(array[s[j]] == 0)
{
array[s[j]] = 1;
count++;
}else{
memset(array, 0, sizeof(array));
max = max > count ? max : count;
count = 0;
break;
}
}
}
max = max > count ? max : count;
return max;
}