输入一个字符串,计算最长的不包含重复字符的子字符串。如:"abcabcbb"的最长无重复子字符串为“abc”,输出结果为3。"bbbbbb"的最长无重复子字符串为"b",输出结果为1.
#include <string.h>
int fun(string s)
{
int n = s.length();
int p = 0;
int q = 0;
bool flag[256] = {false,};
int maxLen = 1;
while (p < n)
{
if (flag[s[p]])
{
maxLen = maxLen > (p-q)? maxLen : p-q;
while (s[q] != s[p])
{
flag[s[q]] = false;
q++;
}
q++;
}
else
{
flag[s[p]] = true;
}
p++;
}
maxLen = maxLen > (n-q)? maxLen : n-q;
return maxLen;
}