训练3+ B-Longest Prefix

来源:互联网 发布:网络tv电视直播软件 编辑:程序博客网 时间:2024/06/11 04:34

比较简单,但是我好像wa了一次,还是太大意了。一开始以为只要找到两组字符串中有多少个相同的就是了,后来才发现操作只对b进行,就是说a的前缀是不变的,应该以a为参照,从前往后比较,如果有一个a中的字符在b中没有(或有但是已经用在前面,没有字符能放在此处了),那么此处变为最长的长度。

#include<iostream>#include<stdio.h>#include<math.h>#include<algorithm>#include<cstring>using namespace std;int numa[30],numb[30];Cint main(){int t;char a[100100],b[100100];scanf("%d",&t);while(t--){scanf("%s%s",a,b);memset(numa,0,sizeof(numa));memset(numb,0,sizeof(numb));int lena=strlen(a);int lenb=strlen(b);int i;       /* for(i=0;i<lenb;i++){numa[a[i]-'a']++;}*/for(i=0;i<lenb;i++){numb[b[i]-'a']++;}int sum=0;for(i=0;i<lena;i++){if(numb[a[i]-'a']==0)break;numb[a[i]-'a']--;sum++;}/*for(i=0;i<26;i++){if(numa[i]<numb[i])sum+=numa[i];elsesum+=numb[i];}*/printf("%d\n",sum);}return 0;}


原创粉丝点击