Maison > développement back-end > C++ > Réduit une chaîne à une adresse e-mail de longueur minimale valide, en remplaçant la sous-chaîne spécifiée

Réduit une chaîne à une adresse e-mail de longueur minimale valide, en remplaçant la sous-chaîne spécifiée

PHPz
Libérer: 2023-09-06 11:01:06
avant
597 Les gens l'ont consulté

Réduit une chaîne à une adresse e-mail de longueur minimale valide, en remplaçant la sous-chaîne spécifiée

Dans cette question, nous recevons une chaîne d'e-mail contenant les mots « point » et « at ». Nous devons les remplacer par les caractères "." et "@".

Remarque - Une adresse e-mail valide ne doit contenir qu'un seul caractère « @ ». Il doit contenir le caractère « @ » avant tout préfixe et le nom de domaine après. De plus, les e-mails valides peuvent contenir plusieurs caractères « . » De plus, les caractères « @ » et « . » ne doivent pas figurer au début ou à la fin de l'adresse e-mail.

Énoncé du problème Étant donné une chaîne str contenant une adresse e-mail, la longueur de la chaîne est N. Nous devons raccourcir la chaîne en remplaçant "at" par le caractère "@" et "point" par le caractère "."

Exemple

Entrez -str=”contactattutorialspointdotcom”

Sortie – contact@tutorialspoint.com

Notes - Nous avons remplacé le "at" et le point par les caractères "@" et "."

Entrez – str = « atatgmaildotcom »

Sortie – at@gmail.com

Notes– Les e-mails ne peuvent contenir qu'un seul « @ » et ne peuvent pas l'avoir au début, donc le résultat ressemble à celui ci-dessus

Méthode 1

Dans cette méthode, nous vérifierons si l'e-mail contient la sous-chaîne "at" ou "point" du caractère actuel. Nous pouvons le remplacer par les caractères "@" et "."

Algorithme

  • Définissez la variable 'len' et stockez la longueur de la variable.

  • Définissez la variable 'minStr' et initialisez-la au premier caractère de la chaîne d'origine

  • Définissez la variable 'I' et initialisez-la à 1 pour l'utiliser dans la boucle. Définissez également la variable « isAtIn Included » et initialisez-la à false pour savoir si le caractère « @ » dans la chaîne a été inclus une fois.

  • Commencez à utiliser une boucle pour parcourir les chaînes.

  • Si i

  • Sinon, si I

  • Sinon, ajoutez le caractère actuel à la chaîne minStr

  • Renvoie la plus petite valeur de chaîne.

Exemple

#include <iostream>
#include <iostream>
using namespace std;

// function to minimize the string by replacing at with @ and dot with '.'
string minifyEmail(string original){
   string minstr = "";
   int len = original.length();
   // append the first character to the final string
   minstr += original[0];
   // start index
   int i = 1;
   // Check wether at(@) already included or not
   bool isAtIncluded = false;
   // travere the string
   for (int i = 0; i < len; i++){
      // at can be replaced at most once
      if (i < len - 3 && !isAtIncluded && original.substr(i, 2) == "at"){
      // add '@' to minstr
      minstr += '@';
      // Update isAtIncluded
      isAtIncluded = true;
      i++;
   }
   // If current substring found dot
   else if (i < len - 4 && original.substr(i, 3) == "dot"){
      // add '.' to minstr
      minstr += '.';
      i += 2;
   } else {
      minstr += original[i];
      }
   }
   return minstr;
}
int main(){
   string original = "contactattutorialspointdotcom";
   cout << "The string after minifying in the proper original format is " << minifyEmail(original);
}
Copier après la connexion

Sortie

The string after minifying in the proper original format is ccontact@tutorialspoint.com
Copier après la connexion

Complexité temporelle - O(N) puisque nous parcourons la chaîne.

Complexité spatiale - O(N) car nous stockons des chaînes compressées.

Dans le code ci-dessus, nous ajoutons toujours le premier caractère à la chaîne minstr. Par conséquent, il n’ajoute jamais de caractères « @ » ou « ». De plus, les utilisateurs peuvent utiliser la méthode replace() pour remplacer "point" par "." et "at" par des caractères "@", mais les programmeurs doivent s'assurer qu'elle n'ajoute qu'un seul caractère "@" à la chaîne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal