33,321
社区成员




int search(char *test)
{
if (test==NULL) return 0;
int map[256]={0};
int max=0,tmp=0;
int len=strlen(test);
for (int i=0;i<len;++i)
{
if (map[test[i]])
{
tmp=i-map[test[i]];
}
map[test[i]]=i+1;
++tmp;
max=max<tmp?tmp:max;
}
return max;
}
int main()
{
char test[]="axdbxce";
printf("%d\n",search(test));
return 0;
}
char* find_max_sub_str(const char* str)
{
const char* pstr = NULL;
int max_length = 0;
const char *p = str;
int count[256] = {0};
int length = 0;
while (*p)
{
if ( count[*p]==0 )
{
count[ *p ]++;
++length;
++p;
}
else
{
if (length > max_length)
{
max_length = length;
pstr = p - length;
}
// reset
p = p - length + 1;
memset(count, 0, sizeof(count));
length = 0;
}
}
if (length > max_length)
{
max_length = length;
pstr = p - length;
}
char* ret = new char[max_length+1];
strncpy(ret, pstr, max_length);
ret[max_length] = '\0';
return ret;
}
int main()
{
{
char buf[] = "axdbxce";
char* dest = find_max_sub_str(buf);
cout << dest << endl;
delete[] dest;
}
{
char buf[] = "axdbx";
char* dest = find_max_sub_str(buf);
cout << dest << endl;
delete[] dest;
}
system("PAUSE");
return 0;
}
dbxce
axdb
Press any key to continue . . .