Skip to content

Commit b241b7d

Browse files
authored
Merge pull request mouredev#2498 from Troleomotor10/main
#4 - Rust
2 parents 1a85ada + e12f257 commit b241b7d

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
use std::collections::HashSet;
2+
3+
/*
4+
* EJERCICIO:
5+
* Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
6+
* en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
7+
* - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
8+
* conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
9+
*
10+
* DIFICULTAD EXTRA (opcional):
11+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
12+
* para descubrir si son:
13+
* - Palíndromos
14+
* - Anagramas
15+
* - Isogramas
16+
*/
17+
18+
fn checkwords(word1: String, word2: String) {
19+
// Saber si una palabra es palindroma -> Palabras que se leen igual de izquierda a derecha que de derecha a izquierda
20+
let invertedword1: String = word1.chars().rev().collect::<String>();
21+
let invertedword2: String = word1.chars().rev().collect::<String>();
22+
println!("La palabra {} es una palindroma? {}", word1, word1 == invertedword1);
23+
println!("La palabra {} es una palindroma? {}", word2, word2 == invertedword2);
24+
25+
// Saber si una palabra en un anagrama -> Palabras que si cambiamos el orden de las letras, son palabras diferentes (Zara = Raza)
26+
let mut string1: Vec<char> = word1.chars().collect();
27+
let mut string2: Vec<char> = word2.chars().collect();
28+
string1.sort();
29+
string2.sort();
30+
println!("Son anagramas? {:?}", string1 == string2);
31+
32+
// Saber si es un isograma -> Palabras que tienen letras repetidas
33+
let mut string1_set: HashSet<char> = HashSet::new();
34+
for c in word1.chars() {
35+
string1_set.insert(c);
36+
}
37+
let string1_fi: String = string1_set.into_iter().collect();
38+
39+
let mut string2_set: HashSet<char> = HashSet::new();
40+
for c in word2.chars() {
41+
string2_set.insert(c);
42+
}
43+
let string2_fi: String = string2_set.into_iter().collect();
44+
45+
println!("La palabra {} es un isograma? {}",word1 ,string1_fi.len() < word1.len());
46+
println!("La palabra {} es un isograma? {}", word2, string2_fi.len() < word2.len());
47+
}
48+
49+
fn main(){
50+
let string1: String = String::from("hello");
51+
let string2: String = String::from("rust");
52+
let string3: String = String::from(" github ");
53+
let string4: String = String::from("Mouredev esta en directo en twitch");
54+
let palabras: Vec<&str> = vec!["Juan", "se", "fue", "a", "comprar", "el", "pan"];
55+
56+
// Formateo
57+
let saludo = format!("{string1}, {string2}");
58+
println!("{saludo}");
59+
60+
// Convertir String a int
61+
let numero: String = String::from("34");
62+
println!("Pasamos una string un valor numerico: {:?}", numero.parse::<i32>().unwrap());
63+
64+
// Ver si una cadena esta vacía
65+
println!("La cadena2 esta vacía? {}", string2.is_empty());
66+
67+
// Obtener una referencia a los bytes que componen la cadena.
68+
println!("La cadena 2 representada en caracteres ASCII es: {:?}", string2.as_bytes());
69+
70+
// Obtener posición
71+
let string2_vector: Vec<char> = string2.chars().collect();
72+
println!("La posición 2 de la cadena 2 es: {:?}", string2_vector[2]);
73+
74+
// Concatenación
75+
let mut result: String = String::new();
76+
result.push_str(&string1);
77+
result.push_str(&string2);
78+
79+
println!("Si concatenamos la string1 y la string2 sale: {}", result);
80+
81+
// Repetición
82+
println!("String2 repetida 3 veces: {}", &string2.repeat(3));
83+
84+
// Longitud
85+
println!("La longitud de la string 1 es de {} caracteres", string1.len());
86+
87+
// Busqueda
88+
let incluye: bool = string2.contains("us");
89+
println!("La string 2 contiene 'us'? {incluye}");
90+
91+
// Reemplazo
92+
println!("En la string 1, si remplazamos las 'l' por 'a' quedaria asi: {}", string1.replace("l", "a"));
93+
94+
// Recorrido
95+
for character in string2.chars() {
96+
println!("{character}")
97+
}
98+
99+
// División
100+
let text: Vec<&str> = string4.split("en").collect();
101+
println!("La string 4 dividida por 'en' es: {:?}", text);
102+
103+
// Mayúsculas y minúsculas
104+
println!("String 2 toda en mayúsculas: {}", string2.to_uppercase());
105+
println!("String 2 toda en minúsculas: {}", string2.to_lowercase());
106+
107+
// Eliminar espacio principio y final
108+
println!("La string sin espacios es: {}", string3.trim());
109+
110+
// Búsqueda al principio y al final
111+
println!("La string 2 comienza por ru? {}", string2.starts_with("ru"));
112+
println!("La string 2 comienza por he? {}", string2.starts_with("he"));
113+
println!("La string 2 acabas por llo? {}", string2.ends_with("llo"));
114+
println!("La string 2 acabas por st? {}", string2.ends_with("st"));
115+
116+
// Búsqueda de la primera posición
117+
println!("La primera letra 't' esta en la posición: {:?}", string4.find("t"));
118+
119+
// Búsqueda de la ultima posición
120+
println!("La ultima letra 't' se encuentra en la posición: {:?}", string4.rfind("t"));
121+
122+
// Búsqueda de ocurrencias
123+
println!("La string 4 tiene: {} caracteres", string4.chars().count());
124+
125+
// Unión de vector
126+
println!("El vector unido mediante espacios es: {}", palabras.join(" "));
127+
128+
checkwords(String::from("radar"), String::from("zara"));
129+
}

0 commit comments

Comments
 (0)