Programa Java para encontrar el prefijo común más largo usando la clasificación

Declaración del problema: dado un conjunto de strings, encuentre el prefijo común más largo.
Ejemplos: 
 

Input: {"geeksforgeeks", "geeks", "geek", "geezer"}
Output: "gee"

Input: {"apple", "ape", "april"}
Output: "ap"

El prefijo común más largo para una array de strings es el prefijo común entre 2 strings más diferentes. Por ejemplo, en la array dada {“manzana”, “simio”, “cebra”}, no hay un prefijo común porque las 2 strings más diferentes de la array “simio” y “cebra” no comparten ningún carácter inicial. 
Hemos discutido cinco enfoques diferentes en las publicaciones a continuación. 
 

  1. Coincidencia palabra por palabra
  2. Coincidencia de personaje por personaje
  3. Divide y conquistaras
  4. Búsqueda binaria .
  5. Usando Trie)

En esta publicación se analiza un nuevo método basado en la clasificación. La idea es ordenar la array de strings y encontrar el prefijo común de la primera y la última string de la array ordenada.
 

Java

// Java program to find longest common prefix of
// given array of words.
import java.util.*;
  
public class GFG
{
    public String longestCommonPrefix(String[] a)
    {
        int size = a.length;
  
        /* if size is 0, return empty string */
        if (size == 0)
            return "";
  
        if (size == 1)
            return a[0];
  
        /* sort the array of strings */
        Arrays.sort(a);
  
        /* find the minimum length from first and last string */
        int end = Math.min(a[0].length(), a[size-1].length());
  
        /* find the common prefix between the first and
           last string */
        int i = 0;
        while (i < end && a[0].charAt(i) == a[size-1].charAt(i) )
            i++;
  
        String pre = a[0].substring(0, i);
        return pre;
    }
  
    /* Driver Function to test other function */
    public static void main(String[] args)
    {
        GFG gfg = new GFG();
        String[] input = {"geeksforgeeks", "geeks", "geek", "geezer"};
        System.out.println( "The longest Common Prefix is : " +
                                   gfg.longestCommonPrefix(input));
    }
}

Producción: 
 

The longest common prefix is : gee

Complejidad de tiempo: O (MAX * n * log n) donde n es el número de strings en la array y MAX es el número máximo de caracteres en cualquier string. Tenga en cuenta que la comparación de dos strings tomaría como máximo el tiempo O (MAX) y para ordenar n strings, necesitaríamos el tiempo O (MAX * n * log n).
Consulte el artículo completo sobre el prefijo común más largo usando la clasificación para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *