Comment pourrais-je faire une analyse de fréquence sur une chaîne sans l'aide d'un commutateur

StackOverflow https://stackoverflow.com/questions/2350056

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 ++.

Était-ce utile?

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
scroll top