Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
int lengthOfLongestSubstring(char* s) {
int i,j,k,leng,lengmax,flag;
i=0;
j=i+1;
if(s[i]=='\0'){
return 0;
}
leng=lengmax=1;
while(s[j]!='\0'){
flag=1;
k=0;
while(k<leng&&flag==1){
if(s[j]!=s[i+k]){
k++;
}
else{
flag=0;
}
}
if(flag==0){
i+=k+1;
leng=j-i+1;
}
else{
leng++;
}
if(leng>lengmax){
lengmax=leng;
}
j++;
}
return lengmax;
}可以再简单一点
int lengthOfLongestSubstring(char* s) {
int i=0,j,k=0,num,nummax;
if(s[i]=='\0'){
return 0;
}
num=nummax=1;
j=i+num;
while(s[j]!='\0'){
if(k==num){
k=0;
num++;
j++;
}
if(s[i+k]!=s[j]){
k++;
}
else{
i=i+k+1;
num=j-i+1;
j++;
k=0;
}
if(num>nummax){
nummax=num;
}
}
return nummax;
}
本文介绍了一种寻找字符串中最长无重复字符子串的算法实现,并提供了两种不同风格的C语言代码示例。该算法适用于字符串处理和相关编程挑战。

被折叠的 条评论
为什么被折叠?



