Dada la string S que representa una dirección de correo electrónico de longitud N , la tarea es encontrar la longitud mínima posible de la string reemplazando «punto» con ‘.’ y “arroba” con ‘@’ de modo que la string represente una dirección de correo electrónico válida.
Una dirección de correo electrónico puede tener solo una ‘@’ y puede tener posiblemente cero o varios puntos (‘.’) de modo que no puede tener ‘@’ o ‘.’ al principio y al final de la dirección de correo electrónico.
Ejemplos:
Entrada: S = “geeksforgeeksatgmaildotcom”
Salida: geeksforgeeks@gmail.com
Explicación:
Reemplazar una “arroba” con ‘@’ y un “punto” con ‘.’ modifica S a geeksforgeeks@gmail.comEntrada: S = “atatdotdotdot”
Salida: at@…dot
Explicación:
Son posibles varios reemplazos, pero no podemos reemplazar “at” desde el principio o “punto” desde el final de la dirección de correo electrónico, ya que no formará un correo electrónico válido Dirección.
Enfoque: la idea es reemplazar todas las substrings de «puntos» con «.» y una substring «at» con «@» excepto desde el principio o desde el final de la string. Siga los pasos a continuación para resolver el problema:
- Atraviese la string sobre los índices [1, N – 2] .
- Si S[i, i + 2] es “punto” , reemplácelo con “.” . Si S[i, i + 1] es “en” , reemplácelo con “@” .
- Imprime la string actualizada como la respuesta.
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 find the minimum length by // replacing at with @ and dot with '.' // such that the string is valid email string minEmail(string email) { // Stores string by replacing at // with @ and dot with '.'# such // that the string is valid email string ans = ""; int len = email.length(); // append first character ans += email[0]; // Stores index int i = 1; // Check if at(@) already included // or not bool notAt = true; // Iterate over characters of the string while (i < len) { // at can be replaced at most once if (i < len - 3 && notAt && email[i] == 'a' && email[i + 1] == 't') { // Update ans ans += '@'; // Update i i += 1; // Update notAt notAt = false; } // If current substring found dot else if (i < len - 4 && email[i] == 'd' && email[i + 1] == 'o' && email[i + 2] == 't') { // Update ans ans += '.'; // Update i i += 2; } else { // Update ans ans += email[i]; } // Update i i += 1; } return ans; } // Driver code int main() { // To display the result string email = "geeksforgeeksatgmaildotcom"; cout << (minEmail(email)); } // This code is contributed by chitranayal.
Java
// Java program for the above approach class GFG { // Function to find the minimum length by // replacing at with @ and dot with '.' // such that the string is valid email static String minEmail(String email) { // Stores string by replacing at // with @ and dot with '.'# such // that the string is valid email String ans = new String(""); int len = email.length(); // append first character ans += email.charAt(0); // Stores index int i = 1; // Check if at(@) already included // or not boolean notAt = true; // Iterate over characters of the string while(i < len){ // at can be replaced at most once if (i < len-3 && notAt && email.charAt(i) == 'a' && email.charAt(i+1) == 't') { // Update ans ans += '@'; // Update i i += 1; // Update notAt notAt = false; } // If current substring found dot else if( i < len-4 && email.charAt(i) == 'd' && email.charAt(i+1) == 'o' && email.charAt(i+2) == 't') { // Update ans ans += '.'; // Update i i += 2; } else { // Update ans ans += email.charAt(i); } // Update i i += 1; } return ans; } // Driver code public static void main (String[] args) { // To display the result String email = new String("geeksforgeeksatgmaildotcom"); System.out.println(minEmail(email)); } } // This code is contributed by rohitsingh07052.
Python3
# python program for the above approach # Function to find the minimum length by # replacing at with @ and dot with '.' # such that the string is valid email def minEmail(email): # Stores string by replacing at # with @ and dot with '.'# such # that the string is valid email ans = '' # append first character ans += email[0] # Stores index i = 1 # Check if at(@) already included # or not notAt = True # Iterate over characters of the string while i < len(email): # at can be replaced at most once if (i < len(email)-3 and notAt and email[i:i + 2] == 'at'): # Update ans ans += '@' # Update i i += 1 # Update notAt notAt = False # If current substring found dot elif i < len(email)-4 and email[i:i + 3] == 'dot': # Update ans ans += '.' # Update i i += 2 else: # Update ans ans += email[i] # Update i i += 1 return ans # Driver Code if __name__ == '__main__': email = 'geeksforgeeksatgmaildotcom' # To display the result print(minEmail(email))
C#
// C# program for the above approach using System; public class GFG { // Function to find the minimum length by // replacing at with @ and dot with '.' // such that the string is valid email static String minEmail(String email) { // Stores string by replacing at // with @ and dot with '.'# such // that the string is valid email String ans = ""; int len = email.Length; // append first character ans += email[0]; // Stores index int i = 1; // Check if at(@) already included // or not bool notAt = true; // Iterate over characters of the string while(i < len) { // at can be replaced at most once if (i < len-3 && notAt && email[i] == 'a' && email[i + 1] == 't') { // Update ans ans += '@'; // Update i i += 1; // Update notAt notAt = false; } // If current substring found dot else if( i < len-4 && email[i] == 'd' && email[i+1] == 'o' && email[i+2] == 't') { // Update ans ans += '.'; // Update i i += 2; } else { // Update ans ans += email[i]; } // Update i i += 1; } return ans; } // Driver code public static void Main(String[] args) { // To display the result String email = "geeksforgeeksatgmaildotcom"; Console.WriteLine(minEmail(email)); } } // This code is contributed by shikhasingrajput
Javascript
<script> // Javascript program for the above approach // Function to find the minimum length by // replacing at with @ and dot with '.' // such that the string is valid email function minEmail(email) { // Stores string by replacing at // with @ and dot with '.'# such // that the string is valid email let ans = ""; let len = email.length; // append first character ans += email[0]; // Stores index let i = 1; // Check if at(@) already included // or not let notAt = true; // Iterate over characters of the string while(i < len){ // at can be replaced at most once if (i < len-3 && notAt && email[i] == 'a' && email[i+1] == 't') { // Update ans ans += '@'; // Update i i += 1; // Update notAt notAt = false; } // If current substring found dot else if( i < len-4 && email[i] == 'd' && email[i+1] == 'o' && email[i+2] == 't') { // Update ans ans += '.'; // Update i i += 2; } else { // Update ans ans += email[i]; } // Update i i += 1; } return ans; } // Driver code // To display the result let email="geeksforgeeksatgmaildotcom"; document.write(minEmail(email)); // This code is contributed by rag2127 </script>
geeksforgeeks@gmail.com
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por rohitsingh07052 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA