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
640 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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

#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

1

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!

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