Skip to content

Commit 278be4c

Browse files
authored
Merge pull request mouredev#3478 from DiegoIBB/patch-7
#04_Java
2 parents 97bd843 + 761e5a1 commit 278be4c

File tree

1 file changed

+317
-0
lines changed

1 file changed

+317
-0
lines changed
Lines changed: 317 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,317 @@
1+
package Cadena_de_Caracteres_04;
2+
import java.util.ArrayList;
3+
import java.util.Scanner;
4+
import java.util.Dictionary;
5+
import java.util.HashMap;
6+
import java.util.Hashtable;
7+
8+
9+
/*
10+
* EJERCICIO:
11+
* Muestra ejemplos de todas las operaciones que puedes realizar con cadenas de caracteres
12+
* en tu lenguaje. Algunas de esas operaciones podrían ser (busca todas las que puedas):
13+
* - Acceso a caracteres específicos, subcadenas, longitud, concatenación, repetición, recorrido,
14+
* conversión a mayúsculas y minúsculas, reemplazo, división, unión, interpolación, verificación...
15+
*
16+
* DIFICULTAD EXTRA (opcional):
17+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
18+
* para descubrir si son:
19+
* - Palíndromos
20+
* - Anagramas
21+
* - Isogramas
22+
*/
23+
24+
25+
public class Cadena_de_Caracteres {
26+
27+
public static void main(String[]args) {
28+
29+
//OPERACIONES BASICAS
30+
31+
// Concatenar
32+
String string_1 = "cadena 1";
33+
String string_2 = "cadena 2";
34+
String string_3 = " segundo elemento";
35+
36+
System.out.println(string_1 + " más " + string_2);
37+
System.out.println(string_1.concat(string_3)); // Método CONCAT
38+
39+
//Indexar
40+
String string_4 = "elemento";
41+
System.out.println(string_4.indexOf("m"));//Por caracter
42+
43+
44+
45+
// METODOS ESPECIALES
46+
47+
String cadena_1 = "Hola mundo";
48+
String cadena_2 = "HELLO";
49+
String cadena_3 = "MINUSCULAS";
50+
String cadena_4 = "mayusculas";
51+
String cadena_5 = "Esta es una cadena";
52+
String cadena_6 = "Caracter";
53+
String cadena_7 = "Listado de caracteres";
54+
55+
//Método charAt, retorna un carácter a partir de un indice
56+
System.out.println("---- METODO CHAR AT ----");
57+
System.out.println(cadena_1.charAt(3));
58+
59+
//Método Length cuenta la cantidad de caracteres de una string
60+
System.out.println("---- METODO LENGTH ----");
61+
System.out.println(cadena_1.length());
62+
63+
//Método Replace cuenta la cantidad de caracteres de una string
64+
System.out.println("---- METODO REPLACE ----");
65+
System.out.println(cadena_2.replace("L", "R"));
66+
67+
//Método ToLowerCase convierte los caracteres en mayusculas a minusculas
68+
System.out.println("---- METODO LOWERCASE ----");
69+
System.out.println(cadena_3.toLowerCase());
70+
71+
//Método ToUperCase convierte los caracteres en minusculas a mayusculas
72+
System.out.println("---- METODO UPPERCASE ----");
73+
System.out.println(cadena_4.toUpperCase());
74+
75+
//Método Split, convierte una cadena en unas serie de subcadenas en formato array
76+
System.out.println("---- METODO SPLIT ----");
77+
String [] split_1 = cadena_5.split(" "); //Creamos un array y dividimos la cadena a partir de un caracter espacio(" ")
78+
String part_1 = split_1[1]; // Podemos guardar los valores del array en variables
79+
80+
System.out.println(split_1[0]);
81+
System.out.println(part_1);
82+
System.out.println(split_1[2]);
83+
System.out.println(split_1[3]);
84+
85+
//Metodo endsWith, nos permite saber si una cadena termina con uno o varios caracteres especificos, devuelve true o false
86+
System.out.println("---- METODO ENDSWITH ----");
87+
System.out.println(cadena_6.endsWith("Cara"));
88+
System.out.println(cadena_6.endsWith("ter"));
89+
System.out.println(cadena_6.endsWith("r"));
90+
91+
//Metodo startsWith, a diferencia de endsWith nos permite saber si una cadena empieza con uno o varios caracteres especificos
92+
System.out.println("---- METODO STARTSWITH ----");
93+
System.out.println(cadena_6.startsWith("Car"));
94+
System.out.println(cadena_6.startsWith("ter"));
95+
System.out.println(cadena_6.startsWith("C"));
96+
97+
//Metodo getChars, junta un grupo de caracteres en un array
98+
char[] ch = new char[7]; //En la declaración del array especificamos la cantidad de caracteres si la string tiene más se muestran espacios en blanco
99+
cadena_7.getChars(0, 7, ch, 0); // (caracte-inicial, caracter-final, array, desfase)
100+
System.out.println(ch);
101+
102+
103+
// OPERACIONES
104+
105+
//Reversa a una cadena, invertimos el orden de una cadena
106+
System.out.println("-------- OPERACION REVERSA -------");
107+
String cadenaOriginal = "Cadena al reves";
108+
String cadenaReversa = "";
109+
110+
for (int i = 0; i < cadenaOriginal.length(); i++) {
111+
System.out.println(cadenaOriginal.charAt(i));
112+
cadenaReversa = cadenaOriginal.charAt(i) + cadenaReversa;
113+
}
114+
System.out.println(cadenaReversa);
115+
116+
117+
/*
118+
* DIFICULTAD EXTRA (opcional):
119+
* Crea un programa que analice dos palabras diferentes y realice comprobaciones
120+
* para descubrir si son:
121+
* - Palíndromos
122+
* - Anagramas
123+
* - Isogramas
124+
*/
125+
126+
// ---------- PALINDROMO ---------
127+
Scanner palindromo = new Scanner(System.in);
128+
System.out.println("Frase:");
129+
String palindromo_1 = palindromo.nextLine();
130+
String frase_reves = "";
131+
String frase_sinEspacios = "";
132+
133+
//Pasamos todas las letras a minusculas
134+
String palindromo_op = palindromo_1.toLowerCase();
135+
136+
//Invierte la frase
137+
for (int l=0; l < palindromo_op.length(); l++) {
138+
if (palindromo_1.charAt(l) == ' ') {
139+
continue;
140+
}else if (palindromo_op.charAt(l) != ' ') {
141+
frase_reves = palindromo_op.charAt(l) + frase_reves;
142+
}
143+
}
144+
145+
//Frase original sin espacios (invertimos la frase que ya habiamos invertido, esta vez sin espacios)
146+
for (int s=0; s < frase_reves.length(); s++){
147+
frase_sinEspacios = frase_reves.charAt(s) + frase_sinEspacios;
148+
}
149+
150+
151+
System.out.println(palindromo_op);
152+
System.out.println(frase_sinEspacios);
153+
System.out.println(frase_reves);
154+
155+
if (frase_sinEspacios.equals(frase_reves)) { //CUANDO QUEREMOS COMPARAR EL CONTENIDO DE 2 CADENAS DEBEMOS USAR EL METODO EQUALS()
156+
System.out.println("La frase es un palindromo");
157+
}else {
158+
System.out.println("La frase no es un palindromo ");
159+
}
160+
161+
/* Si hacemos una comparación tradicional "if(cadena_1 == cadena_2)"
162+
* lo que estamos haciendo es comparar si la instancia es la misma,
163+
* sin embargo la instancia no es la misma
164+
*
165+
* (instancia) String frase_reves es distinto a (instancia) String palindromo_1
166+
*
167+
* la forma correcta de evaluar si el contenido de 2 cadenas es el mismo es por medio del
168+
* método equals()
169+
*
170+
* */
171+
172+
// ---------- ANAGRAMA ---------
173+
174+
//Entregar 2 palabras y ver si una es un anagrama de la otra
175+
176+
//Entrada de palabras
177+
Scanner palabra_1 = new Scanner(System.in);
178+
System.out.println("Palabra 1: ");
179+
String word_1 = palabra_1.nextLine();
180+
181+
Scanner palabra_2 = new Scanner(System.in);
182+
System.out.println("Palabra 2: ");
183+
String word_2 = palabra_2.nextLine();
184+
185+
anagrama(word_1, word_2);
186+
187+
// ---------- ISOGRAMA ---------
188+
189+
Scanner palabra_3 = new Scanner(System.in);
190+
System.out.println("Palabra 3: ");
191+
String word_3 = palabra_3.nextLine();
192+
193+
194+
System.out.println(isograma(word_3));
195+
196+
197+
Scanner palabra_4 = new Scanner(System.in);
198+
System.out.println("Palabra 4: ");
199+
String word_4 = palabra_4.nextLine();
200+
201+
System.out.println(isograma_2(word_4));
202+
203+
}
204+
205+
public static String anagrama(String cadena_1, String cadena_2) {
206+
207+
String cadena_1_toLow;
208+
String cadena_2_toLow;
209+
210+
//Convertimos las cadenas originales a minusculas
211+
cadena_1_toLow = cadena_1.toLowerCase(); //Guardamos la primera cadena con todos los caracteres en minusculas
212+
cadena_2_toLow = cadena_2.toLowerCase(); //Guardamos la segunda cadena con todos los caracteres en minusculas
213+
214+
//Obtenemos el largo de cada cadena
215+
int cadena_1len = cadena_1.length();
216+
int cadena_2len = cadena_2.length();
217+
int counter = 0;
218+
int charCounter = 0;
219+
220+
ArrayList<Character> letra_cadena_1 = new ArrayList<Character>();
221+
ArrayList<Character> letra_cadena_2 = new ArrayList<Character>();
222+
223+
for(int c=0; c < cadena_1len; c++) { //Para añadir caracteres de la primera palabra en una lista
224+
letra_cadena_1.add(cadena_1_toLow.charAt(c));
225+
}
226+
for(int d = 0; d < cadena_2len; d++) { //Para añadir caracteres de la segunda palabra en una lista
227+
letra_cadena_2.add(cadena_2_toLow.charAt(d));
228+
}
229+
230+
//Recorremos la segunda cadena a partir de cada caracter de la primera cadena
231+
if(cadena_1len == cadena_2len){
232+
for(int e = 0; e < cadena_1len; e++) {
233+
charCounter = 0;
234+
for(int f = 0; f < cadena_2len; f++) {
235+
if(cadena_1_toLow.charAt(e) == cadena_2_toLow.charAt(f)) {
236+
//System.out.println("Element " + cadena_1_toLow.charAt(e) + " is in both strings");
237+
charCounter += 1;
238+
counter += 1;
239+
//Esta sección reduce en 1 el contador si se repite más de una vez //Resolver que no se repita la impresión del mismo caracater 2 veces
240+
if(charCounter > 1) {
241+
counter -= 1;
242+
}
243+
else {
244+
System.out.println("Element " + cadena_1_toLow.charAt(e) + " is in both strings");
245+
}
246+
}
247+
else {
248+
continue;
249+
}
250+
}
251+
//System.out.println(charCounter);
252+
}
253+
254+
//Establecemos que 2 palabras son anagramas si tienen los mismos caracteres
255+
256+
if (counter == cadena_1len) {
257+
System.out.println("The strings are anagrams");
258+
}else {
259+
System.out.println("The strings are not anagramas");
260+
}
261+
}else {
262+
System.out.println("The strings are not anagramas");
263+
}
264+
265+
System.out.println("Length of both strings: " + cadena_1len + " and " + cadena_2len);
266+
System.out.println("Characters that coincide: " + cadena_1len + " and " + counter); //Counter difiere del largo de la primera cadena si hay caracteres repetidos
267+
268+
269+
return "La palabra es un anagrama";
270+
}
271+
272+
273+
// ---------- ISOGRAMA ---------
274+
275+
//Entregar 1 palabra y ver si se repiten la misma cantidad de veces cada una de sus letras
276+
277+
//Señalamos que el resultado a retornar es un Diccionario
278+
public static Dictionary isograma(String cadena_3) {
279+
String cadena_3_low;
280+
cadena_3_low = cadena_3.toLowerCase();
281+
282+
Dictionary<Character, Integer> dictCaracteres = new Hashtable<>();
283+
284+
for(int i=0; i < cadena_3_low.length(); i++) {
285+
dictCaracteres.put(cadena_3_low.charAt(i), 1);
286+
}
287+
288+
return dictCaracteres;
289+
}
290+
291+
292+
//Señalamos que el resultado a retornar es un HashMap
293+
294+
public static HashMap isograma_2(String cadena_3) {
295+
String cadena_4_low;
296+
cadena_4_low = cadena_3.toLowerCase();
297+
298+
HashMap<Character, Integer> hashMapCaracteres = new HashMap<>();
299+
300+
for(int i=0; i < cadena_4_low.length(); i++) {
301+
for(int e=0; e < cadena_4_low.length(); e++) {
302+
if(cadena_4_low.charAt(i) == hashMapCaracteres.get(e)) {
303+
hashMapCaracteres.put(cadena_4_low.charAt(i), 1);
304+
}else {
305+
hashMapCaracteres.put(cadena_4_low.charAt(i), 2);
306+
}
307+
}
308+
//hashMapCaracteres.put(cadena_4_low.charAt(i), 1);
309+
// if(cadena_4_low.charAt(i) == hashMapCaracteres.get(cadena_4_low.charAt(i))) { //Buscar método que verifique que un elemento está en el diccionario
310+
// hashMapCaracteres.put(cadena_4_low.charAt(i), 1);
311+
// }
312+
}
313+
314+
return hashMapCaracteres;
315+
}
316+
317+
}

0 commit comments

Comments
 (0)