题目大意:给出两个字符串s、t,判断s是否是t的子序列。
按顺序在t中寻找每一个s中的字符即可,每次记录该字符在上一个字符出现位置之后的第一次出现的位置。
以下是我的代码:
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
bool OK(const string &s,const string &t)
{
int pos(-1);
for(int i=0;i<s.size();i++)
{
bool found(false);
for(int j=pos+1;j<t.size();j++)
if(s[i]==t[j])
{
pos=j;
found=true;
break;
}
if(!found)
return false;
}
return true;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
#endif
string s,t;
while(cin>>s>>t)
if(OK(s,t))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;
}
posted on 2011-05-21 08:22
lee1r 阅读(371)
评论(0) 编辑 收藏 引用 所属分类:
题目分类:基础/模拟