0
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef long long int ll;

int main()
{
    string s;
    cin >> s;

    map<char, int,greater <int>> m;
    m['A'] = 1;
    m['C'] = 1;
    m['G'] = 1;
    m['T'] = 1;
    for(ll i = 0; i < s.length()-1; i++)
    {
        if(s[i] == s[i+1])  //ATTCGGGA
            m[s[i]]++;
    
    }

    for(auto it = m.begin(); it != m.end(); it++)
    {
        cout <<it->first <<" " <<it->second<<endl;
    }
    //cout <<it->second<<endl;

    return 0;
}

我想要的输出应该是 G 3 T 2 A 1 C 1 但它显示 T 2 G 3 C 1 A 1 我不知道为什么会这样,因为我已经提到它在有序映射中更大。请好心解决问题?

4

1 回答 1

0

你可以简单地使用一个队列。如果你想用地图来做,请使用 multi_map(); 并使用 int 作为键和 char 作为值,您将根据 int 值对它们进行排序

于 2020-06-26T21:52:47.397 回答