准备洗衣服,睡觉,今天出外面啦,感觉没做什么题目。。明天要加油~
/*
zoj_1315 字符串处理
简单题
注意:1.大小写不区别
2.找到的字符串的下一位不能是字母
收获:巩固了string find的用法
*/
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
string keyword[25];
struct excuse
{
string inf;
string copy;
int times;
}ex[25];
bool cmp( excuse a,excuse b )
{
return a.times>b.times;
}
int main()
{
int i,j,K,E,count;
int it;
count=1;
while( cin>>K>>E )
{
for( i=0;i<K;i++ )
cin>>keyword[i];
cin.get();
for( i=0;i<E;i++ )
{
getline( cin,ex[i].inf );
ex[i].copy=ex[i].inf;
for( j=0;j<ex[i].inf.size();j++ )
if( ex[i].inf[j]>='A' && ex[i].inf[j]<='Z' )
ex[i].inf[j]+=32;
ex[i].times=0;
for( j=0;j<K;j++ )
{
it=0;
while( ( it=ex[i].inf.find( keyword[j],it ) )!=string::npos )
{
it+=keyword[j].size();
if( it>=ex[i].inf.size() )
break;
if( ex[i].inf[it]<='a' || ex[i].inf[it]>='z' )
ex[i].times++; //检查找到的字符串后面是否字母,这个判断必须
}
}
}
sort( ex,ex+E,cmp );
cout<<"Excuse Set #"<<count<<endl;
cout<<ex[0].copy<<endl;
i=1;
while( ex[i].times==ex[i-1].times )
{
cout<<ex[i].copy<<endl;
i++;
}
cout<<endl;
count++;
}
return 0;
}