Encuentre el carácter alfabético más grande presente en la string

Dada una string str , nuestra tarea es encontrar el carácter alfabético más grande , cuyas mayúsculas y minúsculas están presentes en la string. Se debe devolver el carácter en mayúscula. Si no existe tal carácter, devuelva -1; de lo contrario, imprima la letra mayúscula del carácter.

Ejemplos: 

Entrada: str = “admeDCAB” 
Salida:
Explicación: 
tanto los caracteres en mayúsculas como en minúsculas de la letra D están presentes en la string y también es el carácter alfabético más grande, por lo que nuestra salida es D.

Entrada: str = “dAeB” 
Salida: -1 
Explicación: 
Aunque el carácter más grande es d en la string, pero la versión en mayúsculas no está presente, por lo tanto, la salida es -1. 

Enfoque ingenuo: para resolver el problema mencionado anteriormente, el método ingenuo es verificar la presencia de cada carácter en la string, tanto en mayúsculas como en minúsculas, es decir, para la letra A, tanto ‘a’ como ‘A’ deben estar allí en la string . Si dicha letra está presente, realizará un seguimiento de ese carácter y se actualizará solo si el carácter actual es mayor que el carácter elegido anteriormente. Este método requiere un tiempo O(n 2 ) en el peor de los casos y puede optimizarse aún más.

Enfoque eficiente: para optimizar el método anterior, usamos el hecho de que tenemos 26 caracteres en el alfabeto inglés, podemos realizar un seguimiento de los caracteres en minúsculas y mayúsculas manteniendo una array de tamaño 26. Mientras iteramos a través de la string dada, marcaremos verdadero tanto en la array si el carácter actual está presente tanto en mayúsculas como en minúsculas. Después de marcar todos los caracteres presentes en la array respectiva, ejecutaremos un ciclo de 25 a 0 y verificaremos si ambas arrays tienen marcado ‘verdadero’. En caso afirmativo, imprimimos la letra mayúscula de ese carácter; de lo contrario, devolvemos -1.

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

Java

// Java program to Find the Largest Alphabetic
// Character present in the string of both
// uppercase and lowercase English characters
 
public class Main {
 
    // Function to find the Largest Alphabetic Character
    public static String largestCharacter(String str)
    {
        // Array for keeping track of both uppercase
        // and lowercase english alphabets
        boolean[] uppercase = new boolean[26];
        boolean[] lowercase = new boolean[26];
 
        char[] arr = str.toCharArray();
 
        for (char c : arr) {
 
            if (Character.isLowerCase(c))
                lowercase = true;
 
            if (Character.isUpperCase(c))
                uppercase = true;
        }
 
        // Iterate from right side of array
        // to get the largest index character
        for (int i = 25; i >= 0; i--) {
 
            // Check for the character if both its
            // uppercase and lowercase exist or not
            if (uppercase[i] && lowercase[i])
                return (char)(i + 'A') + "";
        }
 
        // Return -1 if no such character whose
        // uppercase and lowercase present in
        // string str
        return "-1";
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String str = "admeDCAB";
 
        System.out.println(largestCharacter(str));
    }
}

Python3

# Java program to Find the Largest Alphabetic
# Character present in the string of both
# uppercase and lowercase English characters
 
# Function to find the Largest Alphabetic Character
def largestCharacter(str):
     
    # Array for keeping track of both uppercase
    # and lowercase english alphabets
    uppercase = [False] * 26
    lowercase = [False] * 26
     
    arr = list(str)
    for c in arr:
        if (c.islower()):
            lowercase[ord(c) - ord('a')] = True
        if (c.isupper()):
            uppercase[ord(c) - ord('A')] = True
             
    # Iterate from right side of array
    # to get the largest index character
    for i in range(25,-1,-1):
         
        # Check for the character if both its
        # uppercase and lowercase exist or not
        if (uppercase[i] and lowercase[i]):
            return chr(i + ord('A')) + ""
    # Return -1 if no such character whose
    # uppercase and lowercase present in
    # string str
    return "-1"
 
# Driver code
 
str = "admeDCAB"
print(largestCharacter(str))
     
 
# This code is contributed by shivanisinghss2110

C#

// C# program to Find the Largest Alphabetic
// char present in the string of both
// uppercase and lowercase English characters
using System;
 
class GFG{
   
// Function to find the Largest Alphabetic char
public static String largestchar(String str)
{
     
    // Array for keeping track of both uppercase
    // and lowercase english alphabets
    bool[] uppercase = new bool[26];
    bool[] lowercase = new bool[26];
 
    char[] arr = str.ToCharArray();
 
    foreach(char c in arr)
    {
        if (char.IsLower(c))
            lowercase = true;
 
        if (char.IsUpper(c))
             uppercase = true;
    }
 
    // Iterate from right side of array
    // to get the largest index character
    for(int i = 25; i >= 0; i--)
    {
         
        // Check for the character if both its
        // uppercase and lowercase exist or not
        if (uppercase[i] && lowercase[i])
            return (char)(i + 'A') + "";
    }
 
    // Return -1 if no such character whose
    // uppercase and lowercase present in
    // string str
    return "-1";
}
 
// Driver code
public static void Main(String[] args)
{
    String str = "admeDCAB";
 
    Console.WriteLine(largestchar(str));
}
}
  
// This code is contributed by amal kumar choubey

Javascript

<script>
 
    // JavaScript program to Find the Largest Alphabetic
    // Character present in the string of both
    // uppercase and lowercase English characters
     
    // Function to find the Largest Alphabetic Character
    function largestCharacter(str)
    {
        // Array for keeping track of both uppercase
        // and lowercase english alphabets
        let uppercase = new Array(26);
        uppercase.fill(false);
        let lowercase = new Array(26);
        lowercase.fill(false);
  
        let arr = str.split('');
  
        for (let c = 0; c < arr.length; c++) {
  
            if (arr == arr.toLowerCase())
                lowercase[arr.charCodeAt() - 97] = true;
  
            if (arr == arr.toUpperCase())
                uppercase[arr.charCodeAt() - 65] = true;
        }
  
        // Iterate from right side of array
        // to get the largest index character
        for (let i = 25; i >= 0; i--) {
  
            // Check for the character if both its
            // uppercase and lowercase exist or not
            if (uppercase[i] && lowercase[i])
                return String.fromCharCode(i +
                'A'.charCodeAt()) + "";
        }
  
        // Return -1 if no such character whose
        // uppercase and lowercase present in
        // string str
        return "-1";
    }
     
    let str = "admeDCAB";
  
    document.write(largestCharacter(str));
 
</script>

Producción:

D

Complejidad de tiempo: O(n) donde n es la longitud de la string. 
Complejidad espacial: O(52)
 

Publicación traducida automáticamente

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