-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReto #8.js
More file actions
48 lines (37 loc) · 1.3 KB
/
Reto #8.js
File metadata and controls
48 lines (37 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
* Reto #8: 🎁 Encuentra el juguete único
*
Santa 🎅 quiere saber cuál es la primera letra no repetida en el nombre de un juguete 🎁.
Escribe una función que reciba un string y devuelva la primera letra que no se repite, ignorando mayúsculas y minúsculas al contar, pero devolviendo la letra tal como aparece en el string.
Si no hay ninguna, devuelve una cadena vacía ("").
Ejemplos:
*/
findUniqueToy('Gift') // 'G'
// ℹ️ La G es la primera letra que no se repite
// y la devolvemos tal y como aparece
findUniqueToy('sS') // ''
// ℹ️ Las letras se repiten, ya que no diferencia mayúsculas
findUniqueToy('reindeeR') // 'i'
// ℹ️ La r se repite (aunque sea en mayúscula)
// y la e también, así que la primera es la 'i'
// Más casos:
findUniqueToy('AaBbCc') // ''
findUniqueToy('abcDEF') // 'a'
findUniqueToy('aAaAaAF') // 'F'
findUniqueToy('sTreSS') // 'T'
findUniqueToy('z') // 'z'
/**
* @param {string} toy - The toy to find the first unique one letter
* @returns {string} The first unique letter in the toy
*/
function findUniqueToy(toy) {
const dictionary = {};
for(const char of toy){
const key = char.toLowerCase();
dictionary[key] = (dictionary[key] ?? 0) + 1;
}
for(const char of toy)
if(dictionary[char.toLowerCase()]===1)
return char;
return '';
}