Interview Questions

152. Given two strings, return the last index of a given substring in a string

Microsoft Interview Questions and Answers


(Continued from previous question...)

152. Given two strings, return the last index of a given substring in a string

Question:
Given two strings, return the last index of a given substring in a string


maybe an answer:


int Findsubstring(Char* s1,char* s2)
{
int l=strlen(s1);int m=strlen(s2);
if(m>n)
{
for(int i=0;i<=m-n;i++)
if(strcmp(substr(s1,i,i+n),s2)==0)
return i+n;
}
else
{
for(int i=0;i<=n-m;i++)
if(strcmp(substr(s2,i,i+m),s1)==0)
return i+m;
}
}



maybe an answer2:


Use autometa. N =Input String Length, Time O(N), Space O(1)

/*Assuming that input pointers are valid*/
int patternMatch (char* pInputStr, char* pPattern)
{
int inputLen = strlen (pInputStr);
int patternLen = strlen (pPattern);
int indexInPattern = patternLen - 1;
int indexInInput = inputLen - 1;
int returnIndex = -1;

while (indexInPattern >= 0)
{
if (pInputStr [indexInInput] == pPattern [indexInPattern])
{
indexInPattern --;
}
else
{
indexInPattern = patternLen - 1;
}
if (indexInPattern == -1)
{
returnIndex = indexInInput;
break;
}
indexInInput --;
}
return returnIndex;
}

(Continued on next question...)

Other Interview Questions