题目大意:

多组测试数据,每一组队两个字符串s和t。让你判断s是否为t的子序列。字符串长度100,000。这个时间复杂度肯定是O(n)了。

#include<iostream>
#include<string.h>
#include<stdio.h>
#define N 100500
using namespace std;

char s[N]={0};
char t[N]={0};

void ceshi()
{
	for(int i=0;i<strlen(s);i++)
	{
		cout<<s[i];
	}
	for(int i=0;i<strlen(t);i++)
	{
		cout<<t[i];
	}
}
int main()
{
	while(scanf("%s %s",s,t)!=EOF)
	{
		//ceshi();
		int x=strlen(s);
		int y=strlen(t);
		int i=0,j=0;//i指s,j指t
		while(1)
		{
			if(s[i]==t[j])
			{
				i++;
			}
			j++;
			if(i>=x)
			{
				printf("Yes\n");
				break;
			}
			if(j>=y)
			{
				printf("No\n");
				break;
			}
		}
		
	}
}

注意:strlen是每一次都要重新遍历一遍数组