Dada una string de correo electrónico que denota una dirección de correo electrónico , la tarea es verificar si una dirección de correo electrónico válida consta de un prefijo de correo electrónico y un dominio de correo electrónico, ambos en formatos aceptables:
Ejemplos:
Entrada: email = “contribute@geeksforgeeks.org” Salida: Válido Explicación: La string dada sigue todos los criterios para una string de correo electrónico válida.
Entrada: correo electrónico = «contribute@geeksforgeeks..org»
Salida: no válido
Enfoque basado en String Traversal : siga los pasos a continuación:
- Compruebe si el primer carácter de la string de identificación del correo electrónico es un alfabeto o no. Si no, entonces el correo electrónico no es válido .
- Ahora recorra la string de correo electrónico para encontrar la posición «@» y «.» Si “@” o “.” no está presente, entonces el correo electrónico no es válido .
- Si “.” no está presente después de «@» , entonces el correo electrónico no es válido .
- Si “.” es el último carácter de la string de correo electrónico , entonces la identificación del correo electrónico no es válida .
- De lo contrario, el correo electrónico es válido .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to check the character // is an alphabet or not bool isChar(char c) { return ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); } // Function to check the character // is an digit or not bool isDigit(const char c) { return (c >= '0' && c <= '9'); } // Function to check email id is // valid or not bool is_valid(string email) { // Check the first character // is an alphabet or not if (!isChar(email[0])) { // If it's not an alphabet // email id is not valid return 0; } // Variable to store position // of At and Dot int At = -1, Dot = -1; // Traverse over the email id // string to find position of // Dot and At for (int i = 0; i < email.length(); i++) { // If the character is '@' if (email[i] == '@') { At = i; } // If character is '.' else if (email[i] == '.') { Dot = i; } } // If At or Dot is not present if (At == -1 || Dot == -1) return 0; // If Dot is present before At if (At > Dot) return 0; // If Dot is present at the end return !(Dot >= (email.length() - 1)); } // Driver Code int main() { // Given string email string email = "contribute@geeksforgeeks.org"; // Function Call bool ans = is_valid(email); // Print the result if (ans) { cout << email << " : " << "valid" << endl; } else { cout << email << " : " << "invalid" << endl; } return 0; }
contribute@geeksforgeeks.org : valid
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Enfoque basado en expresiones regulares : el problema dado también se puede resolver usando expresiones regulares. A continuación se muestran los pasos:
- Obtenga la string de correo electrónico .
- Cree una expresión regular para verificar el correo electrónico válido como se menciona a continuación:
expresión regular = “ (\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+”
- Haga coincidir la string de correo electrónico dada con la expresión regular. En C++ , esto se puede hacer usando regex_match() .
- Imprima «Válido» si la string de correo electrónico dada coincide con la expresión regular dada; de lo contrario, devuelva «No válido» .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <iostream> #include <regex> using namespace std; // Function to check the email id // is valid or not bool isValid(const string& email) { // Regular expression definition const regex pattern( "(\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+"); // Match the string pattern // with regular expression return regex_match(email, pattern); } // Driver Code int main() { // Given string email string email = "contribute@geeksforgeeks.org"; // Function Call bool ans = isValid(email); // Print the result if (ans) { cout << email << " : " << "valid" << endl; } else { cout << email << " : " << "invalid" << endl; } }
contribute@geeksforgeeks.org : valid
Complejidad temporal: O(N)
Espacio auxiliar: O(1)