标签:poj
| Time Limit: 1000MS | Memory Limit: 30000K | |
Description
Input
Output
Sample Input
sequence subsequence person compression VERDI vivaVittorioEmanueleReDiItalia caseDoesMatter CaseDoesMatter
Sample Output
Yes No Yes No
题目大意:
问是否字符串1是字符串2的子列。
解题思路:
对第一个字符串进行枚举,然后和第二个字符串匹配,匹配正确记录位置,然后进行下一个字符的匹配。(匹配是找离当前最近的并且靠右的)。
代码:
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string str1,str2;
void solve(){
bool ans = true;
int pos=0;
for(int i=0;i<str1.length();i++){
for(int j=pos;j<str2.length();j++){
if(str1[i]==str2[j]){
pos=j+1;
break;
}
if(j==str2.length()-1&&str2[j]!=str1[i]){
ans =false;
}
}
}
if(!ans) printf("No\n");
else printf("Yes\n");
}
int main(){
while(cin>>str1>>str2){//cin都是以空格,tab,换行结束的,getline是以换行结束的.
solve();
}
return 0;
}
标签:poj
原文地址:http://blog.csdn.net/hush_lei/article/details/38981769