Programa en C++ para comprobar si una string es un pangrama o no

Dada la string str, la tarea es verificar si una string es pangrama o no se usa en C++.

Una string es un pangrama si la string contiene todas las letras del alfabeto inglés.

Ejemplos: 

Entrada: str = « Pronto juzgamos las hebillas de marfil antiguas para el próximo premio»

Salida:

Explicaciones: En la string anterior, str tiene todas las letras del alfabeto inglés.

Entrada: str = « Juzgamos rápidamente las hebillas de marfil antiguas para el premio»

Salida: No

 

Método-1: Sin usar STL

Este enfoque se basa en Hashing. 

  1. Se crea una estructura de datos Hashing de tipo booleano de tamaño 26, de forma que el índice 0 representa el carácter ‘a’, el 1 representa el carácter ‘b’ y así sucesivamente. 
  2. Recorra la string carácter por carácter y marque el carácter particular como presente en el Hash. 
  3. Después de completar el recorrido y marcar la string, recorra el Hash y vea si todos los caracteres están presentes, es decir, cada índice tiene verdadero. Si todos están marcados, devuelve verdadero, de lo contrario, falso.

C++

// C++ Program to check if the given
// string is a pangram or not
  
#include <bits/stdc++.h>
using namespace std;
  
// Returns true if the string is
// pangram else false
bool checkPangram(string& str)
{
    // Create a hash table to mark
    // the characters
    // present in the string
    vector<bool> mark(26, false);
  
    // For indexing in mark[]
    int index;
  
    // Traverse all characters
    for (int i = 0; i < str.length(); i++) {
  
        // If uppercase character,
        // subtract 'A' to find index.
        if ('A' <= str[i] && str[i] <= 'Z')
            index = str[i] - 'A';
  
        // If lowercase character,
        // subtract 'a' to find index.
        else if ('a' <= str[i]
                 && str[i] <= 'z')
            index = str[i] - 'a';
  
        // If this character is not
        // an alphabet, skip to next one.
        else
            continue;
  
        mark[index] = true;
    }
  
    // Return false
    // if any character is unmarked
    for (int i = 0; i <= 25; i++)
        if (mark[i] == false)
            return (false);
  
    // If all characters were present
    return (true);
}
  
// Driver Code
int main()
{
    string str = "We promptly judged"
                 " antique ivory"
                 " buckles for the next prize";
  
    if (checkPangram(str) == true)
        printf("Yes");
    else
        printf("No");
  
    return (0);
}
Producción

Yes

Complejidad de tiempo: O(N), donde N es la longitud de la string.
Espacio Auxiliar: O(1)

Método 2: Usar STL

El método transform() de STL se puede usar para verificar si la string dada es Pangram o no.

Sintaxis:

transform(s.begin(), s.end(), s.begin(), ::toupper);

Enfoque:
Para verificar si la string contiene todos los alfabetos del alfabeto inglés: 

Paso 1: en primer lugar, convierta todas las letras en mayúsculas o minúsculas porque si comprueba sin convertir, los alfabetos en minúsculas y mayúsculas se considerarán como letras diferentes. 
Paso 2: ordene la string y verifique la letra distinta. 
Paso 3: El espacio también se considerará como una entidad distinta. 
Paso 4: ahora verifique si cuenta = 27, entonces la string contiene los 26 alfabetos. 

CPP

// C++ Program to check whether
// a string pangram or not using STL
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to return given string
// str is pangrams yes or no
string pangrams(string s)
{
  
    // Initialization of count
    int count = 0;
  
    // Convert each letter into
    // uppercase to avoid counting
    // of both uppercase and
    // lowercase as different letters
    transform(s.begin(),
              s.end(),
              s.begin(),
              ::toupper);
  
    // Sort the string
    sort(s.begin(), s.end());
  
    // Count distinct alphabets
    for (int i = 0; i < s.size(); i++) {
        if (s[i] != s[i + 1])
            count++;
    }
    
    // If count is 27 then the string
    // contains all the alphabets
    // including space as a
    // distinct character
    if (count == 27)
        return "Yes";
  
    else
        return "No";
}
  
// Driver code
int main()
{
    // Given string str
    string str = "We promptly "
                 "judged antique"
                 "ivory buckles for "
                 "the next prize";
  
    // Function Call
    cout << pangrams(str);
  
    return 0;
}
Producción

Yes

Complejidad de tiempo: O(N), donde N es la longitud de la string.
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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