zoj 1315

本文分享了在代码处理过程中的高效技巧与优化实践案例,包括字符串操作、数据排序、算法应用等方面,旨在提高编程效率与代码质量。通过具体实例展示了如何使用stringfind等函数进行字符串查找,并对代码进行了优化,确保了程序的稳定性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备洗衣服,睡觉,今天出外面啦,感觉没做什么题目。。明天要加油~

/*
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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值