Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2023-09-06 11:01:06
ke hadapan
629 orang telah melayarinya

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);
}
Salin selepas log masuk

Output

The string after minifying in the proper original format is ccontact@tutorialspoint.com
Salin selepas log masuk

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 Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan