这个只写了判断一次的程序,没有加多次输入的循环。思想就是先在B序列里找A[0]对应的字母,找到后(找不到输出not,中断循环)标记这个位置,下个对应的字母必须从这个位置之后找才有效,以此类推。用了标准库里面的find函数,记得加头文件。
#include <iostream>
#include <vector>
#include <string>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#define maxn 100010
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
bool available=01;
int lena=a.length();
string::iterator tempIterator;
for(string::iterator i=a.begin();i!=a.end();i++)
{
if(i==a.begin())
{
tempIterator=find(b.begin(),b.end(),*i);
if(tempIterator==b.end())
{
cout<<"not"<<endl;
available=0;
break;
}
}
else
{
tempIterator=find(tempIterator+1,b.end(),*i);
if(tempIterator==b.end())
{
cout<<"not"<<endl;
available=0;
break;
}
}
}
if(available==1)
cout<<"yes";
}