题目大意:输入两个字符串s和t,判断是否能从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如:abcde可以得到bce,但无法得到dc。
写的一个伪代码:
cin>>s>>t;
for(j=0; j<t.size(); j++) if(s[i] = t[j]) i++;
if(i==s.size()) cout<<“Yes”;
else cout<<“No”;
AC代码:
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv) {
string s,t;
while(cin>>s>>t)
{
int l=s.size();
int i=0,j=0;
for(; j<t.size(); j++)
if(s[i]==t[j]) i++;
if(i==l) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
一开始忘记scanf不能直接输出string型变量,就报错了。
另外如果用char型的话需要考虑范围,试了一下应该在1e4,记得放在main之外,防止栈溢出。