一个字符串由排好序的数构成,在其中查找是否存在另一个字串(也是一个数)。可以用二分法,但是要把所有字符串都转成数。
int main()
{
char *strSrc = "1 234 56789 93785935";
char *strTgt = "5935";
int lenTgt = strlen(strTgt)-1;
int indexSrc = strlen(strSrc)-1;
int indexTgt = strlen(strTgt)-1;
bool foundTgt = false;
while (!foundTgt && indexSrc >=0)
{
while ((indexTgt>=0) && (indexSrc>=0) && *(strTgt+indexTgt)==*(strSrc+indexSrc))
{
indexTgt--;
indexSrc--;
}
if ((indexTgt == -1) && (*(strSrc+indexSrc)==' ' || indexSrc == -1))
{
foundTgt = true; // found strTgt in strSrc
}
else if (indexSrc == -1)
{
break; // finished search strSrc
}
else // find next start point in strSrc and reset indices
{
indexTgt = lenTgt;
while(*(strSrc+indexSrc) != ' ' && (indexSrc >= 0))
{
indexSrc--;
}
indexSrc--;
}
}
cout << (foundTgt?"Found!\n":"Not found!\n");
return 0;
}