Ejercicios de sets y maps

Anagrama

Un anagrama es una palabra que se forma al permutar letras de otra palabra. Por ejemplo, 'proa' es un anagrama de 'ropa' pues tiene las mismas letras pero en orden diferente. Otros ejemplos: 'saco' es anagrama de 'cosa', 'altisonancia' es anagrama de 'nacionalista', 'aabc' es anagrama de 'caba'. El anagrama debe contener las mismas letras en iguales cantidades que la palabra original, por ejemplo 'aabc' es anagrama de 'caba', 'abc' NO es anagrama de 'caba'. Una algoritmo para determinar si dos palabras son anagramas una de otra es.

Input: dos strings p1 y p2
Output: true si son anagramas
--------------------------------------------
1. Declarar un map M con llave caracter y valor entero
2. Usar el mapa para determinar la frecuencia de cada letra en p1
3. Si len(p1) != len(p2) return false
3. Por cada letra c de p2:
4.    Si c no está en M o el valor de M[c] == 0, devolver false
5.    Else: restar 1 al valor de M[c]
6. return true

El propósito del paso 2 es que en el mapa haya una llave por cada letra única de p1 y el valor asociado sea su frecuencia. Por ejemplo, para 'alacran', el mapa tendría los siguientes llaves-valores: a, 3 c, 1 l, 1 n, 1 * r, 1

Implementa un programa que use el algoritmo sugerido para determinar si dos palabras son anagramas.

Conteo de palabras

Implementa un programa en C++ que reciba un lista de palabras e informe la(s) palabra(s) más utilizadas. Por ejemplo, si recibe: ancla, babor, estribor, barco, barco, ancla, mar, pez. Reportará que las palabras más utilizadas son ancla y barco. Si recibe: sapo, traje, habia, rio, verde, frio, traje, reportará que la palabra más utilizada fue 'traje'.

Añadir / borrar

Crear un programa que lea un input con el siguiente formato:

Numero de instrucciones
instrucción dato
instrucción dato
. . . 

Donde las posibles instrucciones son: 1 x: Añadir un elemento x al set 2 x: Remover el elemento x del set (Si el número no está en el set, no hacer nada) 3 x: Imprimir "Yes" si el número x está en el set, de lo contrario imprimir "No" (sin las comillas)

Ejemplo de input

8
1 9
1 6
1 10
1 4
3 6
3 14
2 6
3 6

, significa que habrá 8 instrucciones. La primera es insertar un 9 al set, la segunda es insertar un 6 al set, etc...

Formato de output: Por cada instrucción de búsqueda, imprimir Yes o No de acuerdo al resultado.

Para el ejemplo de input, el output quedaría así:

Yes
No
No

Cosas favoritas

Pide al usuario que entre sus 10 cosas favoritas una por una y al final imprímelas en orden ascendente. Si el usuario entre repite alguna de las cosas sigue preguntando hasta que haya entrado diez cosas únicas.

Otros ejercicios