1
+
2
+ /*
3
+ * EJERCICIO:
4
+ * Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
5
+ * en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
6
+ * - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
7
+ * conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
8
+ *
9
+ * DIFICULTAD EXTRA (opcional):
10
+ * Crea un programa que analice dos palabras diferentes y realice comprobaciones
11
+ * para descubrir si son:
12
+ * - Palíndromos
13
+ * - Anagramas
14
+ * - Isogramas
15
+ */
16
+
17
+ /*
18
+
19
+ Los palíndromos son palabras o frases que al leerse de izquierda a derecha y viceversa dicen lo mismo
20
+
21
+ Un anagrama es una palabra que resulta de la transposición de todas las letras de otra palabra12. Puede aplicarse también a grupos de palabras o frases1. Existen dos tipos de anagramas:
22
+
23
+ Isogramas
24
+ */
25
+
26
+ const cadenaAmigo : string = "amigo" ;
27
+ const cadenaUn = "Un" ;
28
+ const cadenaEres = "eres" ;
29
+
30
+ //! concatenar strings
31
+ const cadenaConcatenadaConSeparador : string = cadenaEres . concat ( "-" , cadenaUn , "-" ) . concat ( cadenaAmigo ) ;
32
+ console . log ( cadenaConcatenadaConSeparador ) ;
33
+
34
+ //Otra forma
35
+ const cadenaConcatenada2 : string = `${ cadenaEres } ${ cadenaUn } ${ cadenaAmigo } ` ;
36
+ console . log ( cadenaConcatenada2 ) ;
37
+
38
+ // otra forma
39
+ const cadenaConcatenada3 : string = cadenaEres + cadenaUn + cadenaAmigo ;
40
+ console . log ( cadenaConcatenada3 ) ;
41
+
42
+ //! Cortar Strings - //!división
43
+ //slice
44
+ const cadenaCortada : string = cadenaAmigo . slice ( 0 , 4 ) ;
45
+ console . log ( cadenaCortada ) ;
46
+
47
+ //split
48
+ const cadenaSplit : string [ ] = cadenaAmigo . split ( "" ) ;
49
+ console . log ( "split(''): " , cadenaSplit ) ;
50
+
51
+ const cadenaSplit2 : string [ ] = cadenaConcatenadaConSeparador . split ( "-" ) ;
52
+ console . log ( cadenaSplit2 ) ;
53
+
54
+ //! recoger length of a string
55
+ const lengthCadenaAmigo : number = cadenaAmigo . length ;
56
+ console . log ( "longitud cadenaAmigo: " , lengthCadenaAmigo ) ;
57
+
58
+ //! recoger caracter de un string
59
+ const caracterPosicion4 : string = cadenaAmigo . charAt ( 3 ) ;
60
+ console . log ( caracterPosicion4 ) ;
61
+
62
+ //! Pillar una subcadena de carácteres dentro de la cadena
63
+ const subcadena : string = cadenaConcatenada2 . substring ( 4 , 2 ) ;
64
+ console . log ( "subcadena un: " , subcadena ) ;
65
+
66
+ //! Comparar cadenas
67
+ const cadenaIgualValorQueAmigo : string = "amigo" ;
68
+
69
+ console . log ( `comparacion: ${ cadenaIgualValorQueAmigo } === ${ cadenaAmigo } ` ) ;
70
+ cadenaIgualValorQueAmigo . match ( cadenaAmigo )
71
+ ? console . log ( "son iguales" )
72
+ : console . log ( "no son iguales" ) ;
73
+
74
+ console . log ( `comparacion: ${ cadenaIgualValorQueAmigo } === ${ cadenaConcatenadaConSeparador } ` ) ;
75
+ cadenaIgualValorQueAmigo === cadenaConcatenadaConSeparador
76
+ ? console . log ( "son iguales" )
77
+ : console . log ( "no son iguales" ) ;
78
+
79
+ //! comparar si existe una subcadena dentro de un string
80
+ const substringExists : boolean = cadenaConcatenadaConSeparador . search ( cadenaAmigo ) !== - 1 ;
81
+
82
+ //! Recorrer cadenas
83
+ const CadenaMayusculas : string = cadenaAmigo . toLocaleLowerCase ( )
84
+ console . log ( "cadenaAmigo en minusculas: " , CadenaMayusculas ) ;
85
+ cadenaAmigo . toLocaleUpperCase ( )
86
+ console . log ( "cadenaAmigo en minusculas: " , cadenaAmigo . toUpperCase ( ) ) ;
87
+
88
+ //! Repetir string
89
+ console . log ( cadenaAmigo . repeat ( 5 ) ) ; //cadenaAmigo.repeat(5);ç
90
+
91
+ const monjaRepetida = "monja" . repeat ( 5 ) ;
92
+ console . log ( monjaRepetida ) ;
93
+
94
+ //!reemplazo
95
+ const cadenaRemplazada : string = cadenaConcatenadaConSeparador . replace ( "-" , '.' ) ;
96
+ console . log ( `cadena antes: ${ cadenaConcatenadaConSeparador } , cadenaRemplazada: ${ cadenaRemplazada } ` ) ;
97
+
98
+
99
+ const palabraDividida : string = cadenaConcatenadaConSeparador . slice ( 0 , 4 ) ;
100
+ console . log ( "Palabra dividida" , palabraDividida ) ;
101
+
102
+ //! interpolación
103
+ const nombre : string = "Carlos" ;
104
+ const apellido : string = "Augusto" ;
105
+ const edad : number = 30 ;
106
+
107
+ const mensaje : string = `Mi nombre es ${ nombre } , mi apellido es ${ apellido } y tengo ${ edad } años.` ;
108
+ console . log ( mensaje ) ;
109
+
110
+ //! verificación
111
+ console . log ( "cadenaAmigo.startsWith('am') --> " , cadenaAmigo . startsWith ( "am" ) ) ;
112
+ console . log ( "cadenaAmigo.endsWith('rot') --> " , cadenaAmigo . endsWith ( "rot" ) ) ;
113
+
114
+ //! Comprobar si pasa un regex
115
+ console . log ( "cadenaAmigo.match(/amig/) --> " , cadenaAmigo . match ( / a m i g / ) != null ) ;
116
+ //! Comprobar si pasa un regex
117
+ console . log ( "cadenaAmigo.match(/amig/) Respuesta real --> " , cadenaAmigo . match ( / a m i g / ) ) ;
118
+ //! comprobar si contiene un substring
119
+ console . log ( "cadenaAmigo.includes('amig') --> " , cadenaAmigo . includes ( "amig" ) ) ;
120
+
121
+ //! recorrido
122
+ for ( let i = 0 ; i < cadenaAmigo . length ; i ++ ) {
123
+ console . log ( `posicion: ${ i + 1 } - caracter: ${ cadenaAmigo [ i ] } ` ) ; // cadenaAmigo.charAt(i)
124
+ }
125
+
126
+
127
+ /**
128
+ * ------------------ Reto Extra ------------------
129
+ * Palindromos
130
+ * Anagramas
131
+ * Isogramas
132
+ */
133
+
134
+ //! Palindromos
135
+
136
+ const palindromo : string = "anilina" ;
137
+ const noPalindromo : string = "amigo" ;
138
+
139
+ // Una forma de hacerlo
140
+
141
+ let palindromoInvertido : string = "" ;
142
+ const ultimoIndex : number = palindromo . length - 1 ;
143
+
144
+ for ( let i = 0 ; i < palindromo . length ; i ++ ) {
145
+ palindromoInvertido += palindromo [ ultimoIndex - i ] ;
146
+ }
147
+ console . log ( "palindromoInvertido" , palindromoInvertido ) ;
148
+ palindromoInvertido == palindromo
149
+ ? console . log ( `${ palindromo } es una palabra palíndroma` )
150
+ : console . log ( `${ palindromo } no es una palabra palíndroma` ) ;
151
+
152
+
153
+ // Otra forma más directa
154
+
155
+ palindromo . toLowerCase ( ) === palindromo . toLowerCase ( ) . split ( "" ) . reverse ( ) . join ( "" )
156
+ ? console . log ( `${ palindromo } es una palabra palíndroma` )
157
+ : console . log ( `${ palindromo } no es una palabra palíndroma` ) ;
158
+
159
+
160
+ //! Anagramas
161
+
162
+ const inglaterra : string = "inglaterra" ;
163
+ const integrarla : string = "integrarla" ;
164
+ let dobleIntegrarla = integrarla ;
165
+
166
+ const inglaterraArray : Array < string > = inglaterra . split ( "" ) ; //convierte el string en un array
167
+ let contador : number = 0 ;
168
+ if ( inglaterra . length === integrarla . length ) {
169
+ const length : number = inglaterraArray . length ;
170
+ for ( let i = 0 ; i < length ; i ++ ) {
171
+ const caracterAComparar = inglaterraArray [ i ] ;
172
+ if ( dobleIntegrarla . includes ( caracterAComparar ) ) {
173
+ contador ++ ;
174
+ const index = dobleIntegrarla . indexOf ( caracterAComparar ) ;
175
+ if ( index !== - 1 ) {
176
+ dobleIntegrarla = integrarla . slice ( 0 , index ) + integrarla . slice ( index + 1 ) ;
177
+ }
178
+ }
179
+ }
180
+ }
181
+ if ( contador === inglaterra . length ) {
182
+ console . log ( `${ integrarla } es un anagrama de ${ inglaterra } ` ) ;
183
+ } else {
184
+ console . log ( `${ integrarla } no es un anagrama de ${ inglaterra } ` ) ;
185
+ }
186
+
187
+
188
+ // Ejemplo refactorizado y optimizado:
189
+ function areAnagrams ( word1 : string , word2 : string ) : boolean {
190
+ if ( word1 . length !== word2 . length ) return false ;
191
+ const sortedWord1 = word1 . toLowerCase ( ) . split ( "" ) . sort ( ) . join ( "" ) ;
192
+ const sortedWord2 = word2 . toLowerCase ( ) . split ( "" ) . sort ( ) . join ( "" ) ;
193
+ return sortedWord1 === sortedWord2 ;
194
+ }
195
+
196
+ if ( areAnagrams ( inglaterra , integrarla ) ) {
197
+ console . log ( `${ integrarla } es un anagrama de ${ inglaterra } ` ) ;
198
+ } else {
199
+ console . log ( `${ integrarla } no es un anagrama de ${ inglaterra } ` ) ;
200
+ }
201
+
202
+
203
+ //! Isogramas
0 commit comments