Comment pourrais-je faire une analyse de fréquence sur une chaîne sans l'aide d'un commutateur
-
23-09-2019 - |
Question
Je travaille un projet scolaire pour mettre en œuvre un code de Huffman sur le texte. La première partie du cours nécessite une analyse de fréquence sur le texte. Y at-il une meilleure façon de côté d'un interrupteur géant et un tableau de compteurs pour le faire?
-à-dire:
int[] counters
for(int i = 0; i <inString.length(); i++)
{
switch(inString[i])
case 'A':
counters[0]++;
.
.
.
Je voudrais faire tous les caractères alphanumériques et la ponctuation. J'utilise c ++.
La solution
Pourquoi ne pas:
int counters[256] = {0};
for(int i = 0; i <inString.length(); i++)
counters[inString[i]]++;
}
std::cout << "Count occurences of \'a\'" << counters['a'] << std::endl;
Autres conseils
Vous pouvez utiliser un tableau indexé par le caractère:
int counters[256];
for (int i = 0; i < inString.length(); i++) {
counters[(unsigned char)inString[i]]++;
}
Vous voulez aussi votre tableau de initialiser counters
à zéro, bien sûr.
à l'aide d'une carte semble tout à fait applicable:
map<char,int> chcount;
for(int i=0; i<inString.length(); i++){
t=inString[i];
chcount[i]? chcount[i]++ : chcount[i]=1;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow