¿Cómo podría hacer análisis de frecuencia en una cadena sin necesidad de utilizar un conmutador
-
23-09-2019 - |
Pregunta
Estoy trabajando un proyecto escolar para implementar un código de Huffman en el texto. La primera parte del curso requiere un análisis de frecuencia en el texto. ¿Hay una mejor manera, aparte de un interruptor gigante y un conjunto de contadores de hacerlo?
es decir:
int[] counters
for(int i = 0; i <inString.length(); i++)
{
switch(inString[i])
case 'A':
counters[0]++;
.
.
.
Me gustaría hacer todos los caracteres alfanuméricos y puntuacion. Estoy usando C ++.
Solución
¿Por qué no:
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;
Otros consejos
Se puede utilizar una matriz indexada por caracteres:
int counters[256];
for (int i = 0; i < inString.length(); i++) {
counters[(unsigned char)inString[i]]++;
}
También tendrá que inicializar la matriz counters
a cero, por supuesto.
usando un mapa parece totalmente aplicable:
map<char,int> chcount;
for(int i=0; i<inString.length(); i++){
t=inString[i];
chcount[i]? chcount[i]++ : chcount[i]=1;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow