题目描述:CodeForces 91A Newspaper Headline
思路:
先用一个b数组记录A字符串中出现的字母,用a数组记录字母出现的顺序,然后遍历B字符串搜索
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <stack> using namespace std; char s1[10009],s2[1000009]; int a[10009][26],b[26]; int main() { while(~scanf("%s %s",s1,s2)) { memset(a,-1,sizeof(a)); memset(b,0,sizeof b); int sum=0,flag=0; int len1=strlen(s1),len2=strlen(s2); for(int i=0; i<len1; i++) { b[s1[i]-'a']=1; for (int j=0; j<=i; j++) if (a[j][s1[i]-'a']==-1) a[j][s1[i]-'a']=i; } for (int i=0; i<len2; i++) if (!b[s2[i]-'a']) { printf("-1\n"); flag=1;break; } if(flag) continue; int j=0; while(j<len2) { sum++; int i=0; while(j<len2&&i<len1&&a[i][s2[j]-'a']!=-1) { i=a[i][s2[j]-'a']+1; j++; } } printf("%d\n",sum); } return 0; }
浙公网安备 33010602011771号