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 "."
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
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 "."
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.
#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); }
The string after minifying in the proper original format is ccontact@tutorialspoint.com
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!