Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengurangkan rentetan kepada alamat e-mel panjang minimum yang sah, dengan menggantikan subrentetan yang ditentukan

Mengurangkan rentetan kepada alamat e-mel panjang minimum yang sah, dengan menggantikan subrentetan yang ditentukan

PHPz
PHPzke hadapan
2023-09-06 11:01:06534semak imbas

Mengurangkan rentetan kepada alamat e-mel panjang minimum yang sah, dengan menggantikan subrentetan yang ditentukan

Dalam soalan ini, kami diberikan rentetan e-mel yang mengandungi perkataan "titik" dan "di". Kita perlu menggantikannya dengan aksara "." dan "@".

Nota - Alamat e-mel yang sah hendaklah mengandungi hanya satu aksara '@'. Ia harus mengandungi aksara '@' sebelum sebarang awalan dan nama domain selepasnya. Selain itu, e-mel yang sah boleh mengandungi berbilang aksara '.'. Selain itu, aksara '@' dan '.' tidak seharusnya berada di permulaan atau penghujung alamat e-mel.

Pernyataan Masalah Diberi rentetan str yang mengandungi alamat e-mel, panjang rentetan itu ialah N. Kita perlu memendekkan rentetan dengan menggantikan "at" dengan aksara "@" dan "titik" dengan aksara "."

Contoh

Masukkan -str=”contactattutorialspointdotcom”

Output – contact@tutorialspoint.com

Nota - Kami menggantikan "at" dan titik masing-masing dengan "@" dan "."

Masukkan – str = “atatgmaildotcom”

Output – di@gmail.com

Nota– E-mel hanya boleh mengandungi satu "@" dan tidak boleh memilikinya pada permulaan, jadi output kelihatan seperti di atas

Kaedah 1

Dalam kaedah ini kami akan menyemak sama ada e-mel mengandungi subrentetan "at" atau "titik" bagi aksara semasa. Kita boleh menggantikannya dengan aksara "@" dan "."

Algoritma

  • Tentukan pembolehubah 'len' dan simpan panjang pembolehubah.

  • Tentukan pembolehubah 'minStr' dan mulakannya kepada aksara pertama rentetan asal

  • Tentukan pembolehubah 'I' dan mulakannya kepada 1 untuk digunakan dalam gelung. Juga, takrifkan pembolehubah 'isAtIncluded' dan mulakannya kepada palsu untuk menjejak sama ada aksara '@' dalam rentetan telah disertakan sekali.

  • Mula menggunakan gelung untuk mengulangi rentetan.

  • Jika i

  • Jika tidak, jika saya

  • Jika tidak tambahkan aksara semasa pada rentetan minStr

  • Kembalikan nilai rentetan terkecil.

Contoh

#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);
}

Output

The string after minifying in the proper original format is ccontact@tutorialspoint.com

Kerumitan masa - O(N) kerana kami mengulangi rentetan.

Kerumitan ruang - O(N) kerana kami menyimpan rentetan mampat.

Dalam kod di atas, kami sentiasa menambahkan aksara pertama pada rentetan minstr. Oleh itu, ia tidak pernah menambah aksara "@" atau "." Selain itu, pengguna boleh menggunakan kaedah replace() untuk menggantikan "titik" dengan "." dan "at" dengan aksara "@", tetapi pengaturcara perlu memastikan bahawa ia hanya menambah satu aksara "@" pada rentetan.

Atas ialah kandungan terperinci Mengurangkan rentetan kepada alamat e-mel panjang minimum yang sah, dengan menggantikan subrentetan yang ditentukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam