jay@fallcreek.com
BAN USERvoid substring(const char* const input)
{
char letters[2] = {0,0};
char currentLetter = 0;
int currentLength = 0;
int overallLength = 0;
int bestOverallLength = 0;
int bestStartIndex;
const int inputLength = (int)strlen(input);
for(int i = 0; i < inputLength; ++i)
{
char thisLetter = input[i];
// update "letters"
if(letters[0] == 0)
{
letters[0] = thisLetter;
currentLetter = thisLetter;
currentLength = 1;
overallLength = 1;
}
else if(letters[1] == 0)
{
if(thisLetter == currentLetter)
{
++currentLength;
}
else
{
letters[1] = thisLetter;
currentLetter = thisLetter;
currentLength = 1;
}
++overallLength;
}
else if((thisLetter == letters[0]) || (thisLetter == letters[1]))
{
if(thisLetter == currentLetter)
{
++currentLength;
}
else
{
currentLetter = thisLetter;
currentLength = 1;
}
++overallLength;
}
else
{
letters[0] = currentLetter;
letters[1] = thisLetter;
currentLetter = thisLetter;
overallLength = currentLength + 1;
currentLength = 1;
}
if(overallLength > bestOverallLength)
{
bestOverallLength = overallLength;
bestStartIndex = (i - bestOverallLength) + 1;
}
}
printf("%d at %d\n",bestOverallLength,bestStartIndex);
}
- jay@fallcreek.com April 17, 2013