Alternativa D - Mapeamento de caracteres
Introdução
A questão aborda a eficiência algorítmica para processamento de strings, especificamente para contagem de frequências de caracteres. O objetivo é identificar a técnica mais adequada para registrar quantas vezes cada vogal aparece em um texto.
Desenvolvimento
Para resolver o problema de contar ocorrências, precisamos de uma estrutura que permita associar rapidamente cada caractere (chave) ao seu número de vezes (valor).
Análise das Alternativas
- Recursão (A): Embora possível implementar a contagem recursivamente, ela adiciona complexidade desnecessária e pode causar estouro de pilha (stack overflow) em strings longas. Não é a técnica fundamental para o armazenamento da contagem.
- Pesquisa Linear (B) e Busca Binária (E): São técnicas de busca. Elas servem para encontrar se um elemento específico existe na lista, mas não são otimizadas para varrer todo o conjunto e acumular estatísticas de frequência de todos os elementos simultaneamente.
- Ordenação de Bolha (C): É um algoritmo de ordenção com complexidade quadrática O(n^2). Ordenar o texto apenas para depois contar seria extremamente ineficiente comparado às outras abordagens.
- Mapeamento de Caracteres (D): Esta é a técnica correta. Envolve o uso de estruturas como Arrays Associativos, Hash Maps ou Dicionários.
Como funciona o Mapeamento
No contexto de contagem de caracteres, utilizamos frequentemente um vetor (array) onde os índices correspondem aos códigos ASCII dos caracteres.
\text{Contador}[código\_ASCII] = \text{Contador}[código\_ASCII] + 1
Ou, usando um mapa/hash:
| Caractere | Contagem |
|---|
| 'a' | 5 |
| 'e' | 3 |
| 'i' | 2 |
Essa abordagem permite percorrer a string uma única vez (Complexidade $O(n)$) e atualizar a contagem em tempo constante $O(1)$ para cada caractere.
Conclusão
A técnica de Mapeamento de Caracteres é a mais adequada pois oferece a melhor relação entre tempo de execução e espaço de memória para este tipo de agregação de dados.
Alternativa D.