3. 无重复字符的最长子串
话不多说,上答案。(ps:学习记录,并非最优解,仅供参考。)
int lengthOfLongestSubstring(char* s) {
int maxLen = 0;
int len = 0;
char *p = s; //当前指针位置
char *ps = s; //当前字串开始位置
char *pc = s;//比较位
while('\0' != *p)
{
while(pc != p)
{
if(*pc == *p) //出现重复值
{
maxLen = maxLen > len?maxLen:len; //记录最长值
len = len - (pc - ps) - 1; //从左重复下一位值到当前p的长度
pc++; //下一个字串起始位置为重复值下一位
ps=pc;
break;
}
pc++;
}
p++;
len++;
pc = ps;
}
maxLen = maxLen > len?maxLen:len; //特殊case
return maxLen;
}