#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int getCharIndex(char c)
{
return int (c - 'a');
}
int getLargestIndex(char *str, int &length)
{
int count = 0;
int i;
int strlength = strlen(str);
int indexpos = 0;
int *charCount = (int *)calloc(26,sizeof(int));
for(i=0;i<strlength;)
{
if(charCount[getCharIndex(*(str+i))] == 0)
{
charCount[getCharIndex(*(str+i))]++;
count++;
i++;
}
else
{
charCount = (int *)calloc(26,sizeof(int));
length =count;
indexpos= i - length;
count = 0;
}
}
return indexpos;
}
int main()
{
int length =0;
char *str = "abcdefgabcdefghabcdefghiabcdefghijkab";
printf("\nInput String: %s", str);
int index = getLargestIndex(str, length);
printf("\nLongest Substring is : %d\n", length);
for(int i=0;i<length;i++)
{
printf("%c", str[index++]);
}
getchar();
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgppbnQgZ2V0Q2hhckluZGV4KGNoYXIgYykKewpyZXR1cm4gaW50IChjIC0gJ2EnKTsJCn0KCmludCBnZXRMYXJnZXN0SW5kZXgoY2hhciAqc3RyLCBpbnQgJmxlbmd0aCkKewppbnQgY291bnQgPSAwOwppbnQgaTsKaW50IHN0cmxlbmd0aCA9IHN0cmxlbihzdHIpOwppbnQgaW5kZXhwb3MgPSAwOwppbnQgKmNoYXJDb3VudCA9IChpbnQgKiljYWxsb2MoMjYsc2l6ZW9mKGludCkpOwpmb3IoaT0wO2k8c3RybGVuZ3RoOykKewppZihjaGFyQ291bnRbZ2V0Q2hhckluZGV4KCooc3RyK2kpKV0gPT0gMCkKewoJY2hhckNvdW50W2dldENoYXJJbmRleCgqKHN0citpKSldKys7Cgljb3VudCsrOwoJaSsrOwp9CmVsc2UKewoJY2hhckNvdW50ID0gKGludCAqKWNhbGxvYygyNixzaXplb2YoaW50KSk7CglsZW5ndGggPWNvdW50OwoJaW5kZXhwb3M9IGkgLSBsZW5ndGg7Cgljb3VudCA9IDA7CQp9Cn0KcmV0dXJuIGluZGV4cG9zOwp9CgppbnQgbWFpbigpCnsKaW50IGxlbmd0aCA9MDsKY2hhciAqc3RyICA9ICJhYmNkZWZnYWJjZGVmZ2hhYmNkZWZnaGlhYmNkZWZnaGlqa2FiIjsKcHJpbnRmKCJcbklucHV0IFN0cmluZzogJXMiLCBzdHIpOwppbnQgaW5kZXggPSBnZXRMYXJnZXN0SW5kZXgoc3RyLCBsZW5ndGgpOwpwcmludGYoIlxuTG9uZ2VzdCBTdWJzdHJpbmcgaXMgOiAlZFxuIiwgbGVuZ3RoKTsKZm9yKGludCBpPTA7aTxsZW5ndGg7aSsrKQp7CnByaW50ZigiJWMiLCBzdHJbaW5kZXgrK10pOwp9CmdldGNoYXIoKTsKCXJldHVybiAwOwp9Cgo=