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: Sí
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.
- 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.
- Recorra la string carácter por carácter y marque el carácter particular como presente en el Hash.
- 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); }
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; }
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