es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo contar el número de intercambios de letras que se hicieron en la cadena de texto?

Quiero que mi programa cuente el número de intercambios de caracteres que ocurren para ordenarlos alfabéticamente. ¿Existe alguna manera sencilla de hacer esto? Aquí está mi código.

import java.util.Arrays;
import java.util.Scanner;

class ArrangingBooks{
public static void main(String[] args) {
     Scanner scan= new Scanner(System.in);
     String str = scan.nextLine();
     char c[] = str.toCharArray();
     Arrays.sort(c);
     System.out.println(new String(c));

     scan.close();
}
}

Entrada de muestra =
LLSLM

Salida para la entrada de muestra =
2

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera sencilla de contar el número de intercambios de caracteres que ocurren para ordenarlos en orden alfabético en Java. Puedes modificar el código existente agregando un contador para el número de intercambios. Aquí tienes el código actualizado:

    import java.util.Arrays;
    import java.util.Scanner;
    
    class OrdenandoLibros{
        public static void main(String[] args) {
             Scanner scan= new Scanner(System.in);
             String str = scan.nextLine();
             char c[] = str.toCharArray();
    
             int numSwaps = 0; // contador para el número de intercambios
    
             for (int i = 0; i < c.length - 1; i++) {
                 for (int j = i+1; j < c.length; j++) {
                     if (c[i] > c[j]) {
                         // intercambiar caracteres
                         char temp = c[i];
                         c[i] = c[j];
                         c[j] = temp;
    
                         numSwaps++; // incrementar el número de intercambios
                     }
                 }
             }
    
             System.out.println(new String(c));
             System.out.println(numSwaps + " intercambios se realizaron para ordenar los caracteres en orden alfabético.");
    
             scan.close();
        }
    }
    

    En este código, se agregó un contador numSwaps para realizar un seguimiento del número de intercambios realizados durante el proceso de ordenamiento. Luego, utilizamos dos bucles for anidados para comparar cada elemento del array y contar el número de intercambios. Al final, mostramos la cadena ordenada y el número de intercambios.

    Usando la entrada de muestra “LLSLM”, este código actualizado produciría:

    LLMSL
    Se realizaron 2 intercambios para ordenar los caracteres en orden alfabético.
    

Comments are closed.