poj 1936 c++ : 全在其中

来源:互联网 发布:广联达软件下载教程 编辑:程序博客网 时间:2024/05/15 02:06

描述

    你设计了一个新的加密技术,可以用一种聪明的方式在一个字符串的字符间插入随机的字符串从而对信息进行编码。由于专利问题,我们将不会详细讨论如何在原有信息中产生和插入字符串。不过,为了验证你的方法,有必要写一个程序来验证原来的信息是否全在最后的字符串之中。

    给定两个字符串s和t,你需要判断s是否是t的“子列”。也就是说,如果你去掉t中的某些字符,剩下字符将连接而成为s。


输入

输入包括多个测试样例。每一个都是由空格分隔的由字母数字ASCII字符组成的两个特定的字符串s和t。s和t的长度不超过100000。

输出

对于每个测试样例,如果s是t的“子列”,则输出”Yes”,否则输出”No”

样例输入

sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter

样例输出

Yes
No
Yes
No

解题思路:

很简单的一道题,只要用i,j作为两个字符串下标,根据匹配情况移动即可
#include <stdio.h>#include <iostream>using namespace std; char s[100050];char t[100050];int main(){    while(~scanf("%s %s",&s,&t)){int sl=strlen(s);int tl=strlen(t);        int i=0,j=0,count=0;while(i<sl&&j<tl){            if(s[i]==t[j]){count++;j++;i++;}else{j++;}}if (count==sl)cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;}





0 0