11231123
int main()
{
int arr[] = { 1, 2, 3, 4, 6, 7,6 };
int hashTable[10000] = { 0, };
int start = 0;
int max = 1;
int size = sizeof(arr);
for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
{
if (hashTable[arr[i]] >= start)
{
start = hashTable[arr[i]]; //记录上次此字符出现的index值;
}
hashTable[arr[i]] = i; //每个值对应的index设置到hashTable中,便于根据字符找到在arr中的index索引值;
if (max < i - start)
{
max = i - start; //计算再次出现的字符和之前出现的字符之前的index差
}
}
cout << "max:" << max << endl;
return 0;
}
//hashTable记录了所有数据元素值对应的index值;
//出现重复字符的时候,start变量记录上一次字符出现的index;
/*
int main()
{
char str[] = "adfacf";
char buf[1024] = {0,};
for (int i = 0; i < strlen(str); i++)
{
char tmp = str[i];
int index = -1;
for (int j = 0; j < strlen(buf); j++)
{
if (buf[j] == tmp)
{
index = j;
break;
}
else
{
index = -1;
}
}
if (index == -1)
{
buf[strlen(buf)] = tmp;
}
else
{
int strsize = strlen(buf) - index - 1;
memmove(buf, (char*)(buf + index + 1), strlen(buf) - index - 1);
memset((char*)(buf + strsize), 0, sizeof(buf) - strsize);
buf[strlen(buf)] = tmp;
}
cout << "buf size:" << strlen(buf) << " :" << buf << endl;
}
cout << buf << endl;
return 0;
}
*/