Você pode usar o código ASCII para te ajudar a mapear as frequências em apenas um vetor de 26 posições ou usar um dicionário para depois descobrir qual é o maior número e depois as letras que tem as maiores frequências.
Em C++, a estrutura de dados map já coloca as chaves na ordem, por isso, não é necessário utilizar um vetor temporário só para ordenar a saída.
#include<iostream>#include<cctype>#include<map>usingnamespace std;intmain(){int N, maior; string frase; map<char,int> frequencias; cin >> N;cin.ignore();for(int i =0; i < N; ++i){frequencias.clear();getline(cin, frase);for(int j =0; j <frase.length(); ++j){if(isalpha(frase[j])){frase[j] =tolower(frase[j]);if(!frequencias.count(frase[j])) frequencias[frase[j]] =0;frequencias[frase[j]]++; } } maior =0;for(map<char,int>::iterator it =frequencias.begin(); it !=frequencias.end(); ++it){if(it->second > maior) maior =it->second; }for(map<char,int>::iterator it =frequencias.begin(); it !=frequencias.end(); ++it){if(it->second == maior) cout <<it->first; } cout << endl; }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.split('\n');letN=parseInt(lines.shift());for(let i =0; i <N; ++i){let frase =lines.shift().trim().toLowerCase().split('');let frequencias =frase.reduce((acc, cur) => {if(/[A-Za-z]/.test(cur)){if(!(cur in acc)) acc[cur] =0; acc[cur] +=1; }return acc; }, {});let maior =Object.values(frequencias).reduce((acc, cur) => acc < cur ? cur : acc,0);let resposta = [];for (let letra in frequencias){if(frequencias[letra] === maior) resposta.push(letra); }resposta.sort();console.log(resposta.join(''));}
N =int(input())for _ inrange(N): frase =input().strip().lower() frequencias ={}for letra in frase:if(letra.isalpha()):if(not letra in frequencias): frequencias[letra]=0 frequencias[letra]+=1 maior =0for letra in frequencias: maior = frequencias[letra]if frequencias[letra]> maior else maior resposta = []for letra in frequencias:if(frequencias[letra]== maior): resposta.append(letra) resposta.sort()print(''.join(resposta))