vector的插入排序,字符串中子字符串個數查找

今天試了一下使用pairvector中,沒想到花了挺長時間的,先記錄一下,免得以後忘記了。

題目大意是尋找一個字符串中含有的子字符串個數,根據出現的頻率降序輸出原來的字符串,同時若是頻率相同,則按照原來的順序輸出,所以這裏需要使用穩定排序。

vector中插入pair的時候,使用make_pair<int,int>(cnt,ix)構建pair。

bool cmp(const pair<int, int> &a, const pair<int, int> &b)
{
    return a.first > b.first;         //降序排列
}
int main()
{
    vector<string> A;
    string C;
    string Q("qw");
    vector<string> B;
    vector<pair<int,int> > outA;
    for(int i=0; i<3; i++)
    {
        cin>>C;
        A.push_back(C);
    }
    for(vector<string>::size_type ix = 0; ix!=A.size(); ix++)
    {
        string::size_type pos = 0;
        unsigned int cnt = 0;
        //transform(A[ix].begin(),A[ix].end(),A[ix].begin(),::toupper);
        while ((pos = A[ix].find(Q, pos)) != string::npos)
        {
            ++cnt;         //統計出現次數
            pos=pos+Q.size();
        }
        outA.push_back(make_pair(cnt,ix));      // 插入pair的時候,使用make_pair<int,int>(cnt,ix)
    }
    stable_sort(outA.begin(),outA.end(),cmp); //穩定排序
    for(vector<int>::size_type ix = 0; ix!=outA.size(); ix++)
    {
        B.push_back(A[outA[ix].second]);
        cout<<B[ix]<<endl;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章