Reduzca una string a una dirección de correo electrónico válida de longitud mínima reemplazando las substrings especificadas

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.com

Entrada: 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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *