Buscar una string en Matrix usando la función Split en Java

Dada una string str y una array mat[][] de alfabetos ingleses en minúsculas, la tarea es encontrar si la string str aparece en la array (ya sea por filas o por columnas).

Ejemplos:

Input: str = "GFG"
            mat[][] = {{'G', 'E', 'E', 'K', 'S'}, 
                             {'F', 'O', 'R', 'A', 'N'}, 
                             {'G', 'E', 'E', 'K', 'S'}}
Output: Yes
GFG is present in the first column.

Input: str = "SSS"
            mat[][] = {{'G', 'E', 'E', 'K', 'S'}, 
                              {'F', 'O', 'R', 'A', 'N'}, 
                              {'G', 'E', 'E', 'K', 'S'}}
Output: No

Enfoque:
si la string de búsqueda está presente en cualquier fila de la array, la función de división producirá los siguientes resultados:

  1. Si la string ocupa toda la fila, la función de división devolverá una array de longitud cero.
  2. Si la string está presente entre caracteres, la longitud de la array será mayor que uno.
  3. Si la longitud de la array es uno, entonces se pueden dar tres casos posibles:
    • La string se produce en la primera mitad.
    • La string se produce en la segunda mitad.
    • La string no está presente en esa fila.
  4. Para buscar la columna de strings, transponga la array y repita el paso uno.
  5. Imprima si se encuentra la string ; de lo contrario, imprima No.

A continuación se muestra la implementación del enfoque anterior:

// Java program to search a string in
// the matrix using split function
import java.util.*;
public class GFG {
  
    // Function to check the occurrence of string in the matrix
    public static int check(String[] matrix, String string)
    {
        // Looping the contents in the matrix
        for (String input : matrix) {
  
            // using split operator
            String[] value = input.split(string);
  
            if (value.length >= 2 || value.length == 0) {
                return 1;
            }
            else if (value.length == 1
                     && input.length() != value[0].length()) {
                return 1;
            }
        }
        return 0;
    }
  
    // Function to transpose the given matrix
    public static String[] vertical(String[] matrix)
    {
        String[] vertical_value = new String[matrix[0].length()];
        for (int i = 0; i < matrix[0].length(); i++) {
            String temp = "";
            for (int j = 0; j < matrix.length; j++)
                temp += matrix[j].charAt(i);
            vertical_value[i] = temp;
        }
  
        // returning the transposed matrix
        return vertical_value;
    }
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Input matrix of characters
        String[] matrix = { "GEEKS", "FORAN", "GEEKS" };
  
        // element to be searched
        String search = "GFG";
  
        // Transpose of the matrix
        String[] verticalMatrix = vertical(matrix);
  
        // Searching process
        int horizontal_search = check(matrix, search);
        int vertical_search = check(verticalMatrix, search);
  
        // If found
        if (horizontal_search == 1 || vertical_search == 1)
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
Producción:

Yes

Publicación traducida automáticamente

Artículo escrito por VISHAL_PERIYASAMY_R 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 *