字符串子串的匹配算法,可以逆向思考,巧妙地从尾到头进行匹配,速度极快。0ms
/* Poj 1936, by Dream 2011/5/16 */
#include <iostream>
using namespace std;
char strChild[100010];
char strFather[100010];
int main()
{
while(EOF != scanf("%s %s", strChild, strFather))
{
int p1 = strlen(strChild) - 1;
int p2 = strlen(strFather) - 1;
bool bRes = true;
while((p1 >= 0) && (p2 >= 0))
{
while((p2 >= 0) && (strChild[p1] != strFather[p2]))
--p2;
if (p2 < 0)
{
bRes = false;
break;
}
--p1;
--p2;
}
if (bRes)
{
printf("Yes/n");
}
else
{
printf("No/n");
}
}
return 0;
}