蓝桥杯ALGO-87字串统计

来源:互联网 发布:傅园慧网络直播完整版 编辑:程序博客网 时间:2024/06/10 04:26

建立了两个类,类S储存字符串出现的次数和时间,类T储存字符串和相应的次数和时间,算法思想就是将string 和相应的储存在类S中的信息先放入map中储存,所有字串统计完毕后,再转移到 vector 中储存并按指定要求排序,输出结果即可。C++代码如下:

#include <bits/stdc++.h>using namespace std;struct S{    int num;    int time;    S(int n=0,int t=0):num(n),time(t)    {    }};struct T{    string str;    S s;    T(string strr,S ss):str(strr),s(ss)    {    }    bool operator <(const T&t)const    {        return this->s.num>t.s.num?true:               this->s.num==t.s.num&&this->str.size()>t.str.size()?true:               this->s.num==t.s.num&&this->str.size()==t.str.size()&&this->s.time<t.s.time?true:               false;    }};int main(int argc, char *argv[]){    string s;    int n;    cin>>n;    cin>>s;    map<string,S>m;    int c=0;    for(int i=n;i<=s.size();++i)    {        for(int j=0;j<=s.size()-i;++j)        {            string ss=s.substr(j,i);            if(m.find(ss)==m.end())            {                m.insert({ss,S(1,c++)});            }            else            {                ++m[ss].num;            }        }    }    vector<T>v;    for(map<string,S>::iterator it=m.begin();it!=m.end();++it)    {        v.push_back(T(it->first,it->second));    }    sort(v.begin(),v.end());    cout<<v[0].str<<endl;}

原创粉丝点击