Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Nyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang

Nyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang

PHPz
PHPzke hadapan
2023-08-25 21:29:061239semak imbas

Nyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang

Tujuan artikel ini adalah untuk melaksanakan program untuk menyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang.

Seperti yang anda ketahui apa itu rentetan, rentetan hanyalah koleksi aksara. Selain itu, tiada had kepada bilangan kali aksara boleh diulang dalam rentetan. Watak yang sama boleh muncul beberapa kali dalam rentetan. Dalam artikel ini, kita akan mencari cara untuk menyahkod str rentetan yang dikodkan dengan mengalih keluar kejadian pendua.

Matlamatnya adalah untuk menyahkod rentetan str yang disediakan, yang telah diproses dengan satu kejadian 'a', dua kejadian 'b', tiga kejadian 'c' dan empat kejadian 'd', sehingga ke 26 kejadian pengekodan 'z'.

Pernyataan Masalah

Atur cara untuk menyahkod rentetan yang diberikan dengan mengalih keluar kejadian pendua.

NOTA − Jangan abaikan ruang yang mungkin disertakan dalam surat.

Contoh Contoh 1

Let us take the input string str = “abbbb accc”
The output obtained is: abb ac
Terjemahan

Penjelasan

ialah:

Penjelasan

Setiap huruf ditulis mengikut bilangan kali ia muncul dalam abjad Inggeris. Rentetan yang terhasil ialah "abb acc" kerana huruf b diulang empat kali. Huruf a diulang dua kali, dan akhirnya huruf c diulang tiga kali.

Juga dalam kes ini, ruang tidak diabaikan.

Contoh 2

Let us take the input string str = “ddddadddd”
The output obtained is: dad
Terjemahan

Penjelasan

ialah:

Penjelasan

Setiap huruf ditulis mengikut bilangan kali ia muncul dalam abjad Inggeris. Rentetan yang terhasil ialah "ayah" kerana huruf d diulang lapan kali dan huruf terakhir a muncul sekali sahaja.

Dalam kes ini, tiada ruang antara aksara.

Contoh 3

Let us take the input string str = “abbccc”
The output obtained is: abc
Terjemahan

Penjelasan

ialah:

Penjelasan

Setiap huruf ditulis dengan mengambil kira bilangan kali ia muncul dalam abjad Inggeris. Rentetan yang terhasil ialah "abc" kerana huruf a muncul sekali sahaja. Huruf b diulang dua kali dan akhirnya huruf c diulang tiga kali.

Dalam kes ini, tiada ruang antara aksara.

Kaedah

Untuk menyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang, kami menggunakan kaedah berikut dalam artikel ini.

Kaedah untuk menyelesaikan masalah ini dan menyahkod rentetan yang diberikan dengan mengalih keluar kejadian pendua adalah berdasarkan mengulang rentetan.

Iaitu, masalah di atas boleh diselesaikan dengan mengulangi rentetan str dan menolak setiap aksara ke dalam rentetan keluaran, kemudian bergerak ke hadapan mengikut kedudukan itu untuk mencari aksara seterusnya.

Algoritma

Diberikan di bawah ialah algoritma untuk mencetak bilangan aksara camelCase yang terdapat dalam rentetan yang diberikan

Untuk menyelesaikan masalah ini, sila ikut arahan yang disenaraikan di bawah -

  • Langkah pertama − Mulakan

  • Langkah 2 - Tentukan Rentetan

  • Langkah 3 - Buat pembolehubah dipanggil hasil dengan nilai awal rentetan kosong untuk menyimpan rentetan output.

  • Langkah 4 - Cipta fungsi findOccurences(char a1) dan lakukan operasi seterusnya -

  • Langkah 5 - Jika nilai a1 jatuh antara a dan z, kembalikan nilai a1 sebagai "a". Jika julat nilai a1 tidak berada dalam julat A hingga Z, maka nilai a1 dikembalikan sebagai "Z". Jika tidak, 0 dikembalikan.

  • Langkah 6 - Tentukan fungsi nyahkodTheString(rentetan s) untuk menyahkod rentetan s

  • Langkah 7 - Selepas melengkapkan peringkat di atas, cetak hasil rentetan sebagai rentetan akhir.

  • Langkah 8 − Berhenti

Contoh: program C++

Ini ialah program C++ yang melaksanakan algoritma yang ditulis di atas untuk menyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang

// C++ program for our above algorithm
#include <bits/stdc++.h>
using namespace std;

// Function to count the number of  occurences of each character
int findOccurences(char a1){

   // If the character is a lower case , that is [a-z]
   if (a1 <= 'z' && a1 >= 'a') {
      return a1 - 'a';
   }
   
   // If the character is an uppercase, that is [A-Z]
   else if (a1 <= 'Z' && a1 >= 'A') {
      return a1 - 'A';
   }
   
   // If the character is something else  like a punctuation mark then
   return 0;
}

// Function used for decoding the given string str
void decodeTheString(string s){
   string result = "";
   
   // Iterate through the provided string str
   for (int i = 0; i < s.length(); i++) {
      result.push_back(s[i]);
      
      // Find the index i of the next characterto be printed
      i += findOccurences(s[i]);
   }
   cout << "The decoded string: " << result << endl;
}
int main(){
   string s = "aaabbbb";
   cout << "Input string: "<< s << endl;
   decodeTheString(s);
   return 0;
}

Output

Input string: aaabbbb
The decoded string: aaabb

Kesimpulan

Begitu juga, kita boleh menyahkod mana-mana rentetan yang diberikan dengan mengalih keluar kejadian pendua daripadanya.

Artikel ini menyelesaikan cabaran menyahkod mana-mana rentetan tertentu dengan mengalih keluar kejadian penduanya. Disediakan di sini ialah kod pengaturcaraan C++ bersama-sama dengan algoritma untuk menyahkod rentetan yang diberikan dengan mengalih keluar pendua mana-mana rentetan yang diberikan.

Atas ialah kandungan terperinci Nyahkod rentetan yang diberikan dengan mengalih keluar aksara berulang. 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