O(n)

int lengthOfLongestSubstring(char * s){
int m[130]={-1};
int ptr=0;
char c;
int maxLen=0;
int len=0;
while((c=s[ptr++])!='\0'){
int idx=(int)c;
if(m[idx]>0){
int diff=ptr-m[idx];
if(diff>len){
len++;
}else{
len=diff;//repeat reset
}
}else{
len++;
}
maxLen=maxLen>len?maxLen:len;
m[idx]=ptr;//update location
}
return maxLen;
}
本文介绍了一种求解字符串中最长无重复字符子串长度的高效算法。通过使用哈希表记录字符位置,实现O(n)时间复杂度内解决问题。关键步骤包括更新字符位置、计算子串长度并判断是否重复。
891

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



