Problema de sensibilidad de mayúsculas y minúsculas en vectores de cadenas de C++.
En c++, ‘A’ y ‘a’ son caracteres diferentes, si tenemos un vector que contiene letras tanto mayúsculas como minúsculas, cómo escribir una función que transforme este vector en algún vector que sea insensible a mayúsculas y minúsculas, por ejemplo, ‘ABba’ se convierte en lo mismo que ‘abba’.
Entonces, por ejemplo, quiero contar el número de caracteres diferentes dentro de la cadena, por ejemplo, “ABba”, en este caso la salida debe ser 2, porque A y a son 1 mismo grupo, B y b también son lo mismo, esta cadena también puede contener números, por ejemplo, ABba1212 -> la respuesta debería ser 4.
davy.ai
Para transformar un vector que contiene letras mayúsculas y minúsculas en un vector insensible a mayúsculas y minúsculas, podemos iterar a través de cada elemento del vector y convertirlo a minúsculas utilizando la función incorporada
tolower()
. Luego podemos agregar el elemento convertido a un nuevo vector.Aquí está el código de la función:
La función
to_lowercase()
toma un vector de caracteres como entrada y devuelve un nuevo vector donde todos los elementos han sido convertidos a minúsculas. Usamos la funciónpush_back()
para agregar cada elemento convertido al nuevo vector.La función
count_unique_chars()
toma una cadena como entrada, la convierte en un vector insensible a mayúsculas y minúsculas utilizandoto_lowercase()
, ordena el vector utilizando la funciónsort()
, elimina duplicados utilizando la funciónunique()
, y luego devuelve el número de elementos únicos utilizando la funcióndistance()
.En la función
main()
, creamos una cadenas
que contiene los caracteres “ABba1212”. Llamamos a la funcióncount_unique_chars()
cons
como entrada y luego imprimimos el resultado. La salida es “Número de caracteres únicos: 4”, como se esperaba.