Jadual Kandungan
Contoh
Arahan
Kaedah naif
Output
Kaedah yang cekap
Kesimpulan
Rumah pembangunan bahagian belakang C++ Gantikan setiap aksara dalam rentetan dengan aksara Kth selepas kekerapannya tepat X kali

Gantikan setiap aksara dalam rentetan dengan aksara Kth selepas kekerapannya tepat X kali

Sep 11, 2023 pm 12:37 PM
rentetan menggantikan kekerapan

Gantikan setiap aksara dalam rentetan dengan aksara Kth selepas kekerapannya tepat X kali

Dalam masalah ini, kita diberi rentetan "str", integer K dan integer X. Rentetan "str" ​​​​hanya mengandungi integer antara 1 dan 9. Kita perlu melakukan operasi X pada rentetan ini. Operasinya ialah setiap kali kita perlu menggantikan bilangan kemunculan aksara dalam rentetan dengan aksara dalam rentetan. Kekerapan di sini merujuk kepada bilangan atau nilai aksara dalam rentetan. Tugas kami adalah untuk mengembalikan aksara ke-k selepas melakukan operasi yang diberikan X kali.

Contoh

Input 1: str = “1231”, K = 5, X = 3
Salin selepas log masuk
Output 1: 2
Salin selepas log masuk

Arahan

Kami telah melakukan operasi yang diberikan sebanyak 3 kali.

1st time, str = 1223331 as 
Salin selepas log masuk
  • Untuk aksara str[0], kekerapan ialah 1 dan nilainya ialah 1, jadi 1 muncul 1 kali.

  • Untuk aksara str[1], kekerapan ialah 2 dan nilainya ialah 2, jadi 2 muncul 2 kali.

  • Watak lain serupa.

2nd time, str = 122223333333331
3rd time, str = 1222222223333333333333333333333333331
Salin selepas log masuk

Jadi tepat X kali kemudian aksara Kth rentetan ialah 2. Jadi jawapannya ialah 2.

Input 2: str = “1121”,  K = 2, X = 5 
Salin selepas log masuk
Output 2: 2
Salin selepas log masuk

Kita telah melihat contoh rentetan yang diberikan di atas, mari kita beralih kepada kaedah -

Kaedah naif

Dalam kaedah ini kita mengira rentetan baru dengan melakukan operasi yang diberikan sehingga X kali. Selepas mendapat rentetan tepat X kali, kami mengembalikan aksara Kth rentetan itu.

Contoh

Mari kita lihat kod untuk lebih memahami kaedah di atas -

#include <bits/stdc++.h>
using namespace std;
 
// Function to find the Kth character of the string after X times
char findKthChar(string str, long long K, int X){
   string s = str; // create another string to store the give string as we need to update the string     
   for (int i = 0; i < X; i++) {
      string temp = ""; // To store the temporary result of each time
      for (int j = 0; j < s.size(); j++) {
         int freq = s[j] - '0'; // getting freq of char s[j]
         
         // adding char value its frequency times to 'temp' result.
         while (freq--) {  
            temp += s[j];
         }
      }
      s = temp; // update the string after.
   } 
   return s[K - 1]; // return Kth character of X times string
} 
int main(){

   // Given Input
   string str = "1231";
   long long K =  5;
   int X = 3;
   
   // Function Call
   char result = findKthChar(str, K, X);
   cout << result << "\n";
   return 0;
}
Salin selepas log masuk

Output

2
Salin selepas log masuk
Salin selepas log masuk

Kerumitan masa dan ruang

Kerumitan masa bergantung pada nombor rentetan yang diberikan dan sama dengan kuasa x nombor dan jumlah setiap nombor.

Kerumitan ruang adalah sama seperti kerumitan masa.

Kaedah yang cekap

Ia adalah versi yang dioptimumkan bagi kaedah di atas. di mana kita mengira julat untuk setiap piagam X kali dan bukannya mencipta rentetan setiap kali.

Di sini kita perhatikan bahawa setiap kali watak itu meningkat berbanding dengan nilai watak yang dinaikkan kepada kuasa masa.

Mari kita bincangkan langkah-langkah utama kaedah di atas di bawah -

  • Buat pembolehubah kthChar untuk menyimpan KthChar rentetan x kali

  • Buat pembolehubah tot untuk menyimpan kiraan kejadian setiap aksara selepas X kali

  • Gunakan gelung for untuk melelaran melalui rentetan dan lakukan langkah berikut

  • ->Dapatkan nilai watak semasa

    ->Menggunakan nilai dan X ini, kita boleh mendapatkan julat aksara semasa selepas X kali. Seperti yang dapat kita perhatikan, setiap kali nilai kekuatan watak meningkat sebanyak X

    sebagai pow(nilai, X).

    −> Simpan julat dalam pembolehubah "tot" untuk mengekalkan panjang rentetan selepas X kali

    −> Semak sama ada aksara Kth selepas X kali berada dalam panjang rentetan semasa

    Sebagai (K <= tot) jika ya maka putuskan gelung for dan simpan aksara semasa ke pembolehubah "kthChar"<= tot) if yes 则中断 for 循环并将当前字符存储到变量“kthChar”

  • Kembali ke kthChar

Contoh

#include <bits/stdc++.h>
using namespace std;
 
// Function to find the Kth character of the string after X times
char findKthChar(string str, long long K, int X){
   char kthChar; // Variable to store the KthChar of x times string
   int tot = 0; // to store the count of the each character occur after the X times 
   
   // Traverse the string 'str'
   for (int i = 0; i < str.size(); i++) { 
      int value = str[i] - '0'; // Convert char into int to get the value 
      
      // Calculate each characters occuring range
      int charRange = pow(value, X);
      tot += charRange; 
      
      // If K is less than tot than kthChar is str[i]
      if (K <= tot) {
         kthChar = str[i];
         break; // break the for loop
      }
   }
   
   // Return answer, kthChar of the string after X times
   return kthChar;
}
int main(){
   string str = "1231"; // given string
   long long K =  5; // given integer
   int X = 3; // given integer
   
   // Function Call to get the kth character after X times
   char result = findKthChar(str, K, X); 
   
   // Print the result
   cout << result << "\n";
   return 0;
}
Salin selepas log masuk

Output

2
Salin selepas log masuk
Salin selepas log masuk

Kerumitan masa dan ruang

Kerumitan masa kod di atas ialah O(N), dengan N ialah saiz panjang yang diberikan.

Kerumitan ruang kod di atas ialah O(1) kerana kami tidak menggunakan sebarang ruang tambahan.

Kesimpulan

Dalam tutorial ini, kami melaksanakan program untuk mencari aksara Kth dalam String selepas menggantikan setiap aksara dengan kekerapannya tepat X kali. Kami melaksanakan dua kaedah, satu kaedah naif dan satu lagi kaedah berkesan.

Atas ialah kandungan terperinci Gantikan setiap aksara dalam rentetan dengan aksara Kth selepas kekerapannya tepat X kali. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci tentang kaedah menukar jenis int kepada rentetan dalam PHP Penjelasan terperinci tentang kaedah menukar jenis int kepada rentetan dalam PHP Mar 26, 2024 am 11:45 AM

Penjelasan terperinci tentang kaedah menukar jenis int kepada rentetan dalam PHP Dalam pembangunan PHP, kita sering menghadapi keperluan untuk menukar jenis int kepada jenis rentetan. Penukaran ini boleh dicapai dalam pelbagai cara Artikel ini akan memperkenalkan beberapa kaedah biasa secara terperinci, dengan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Gunakan fungsi terbina dalam PHP strval(). PHP menyediakan fungsi terbina dalam strval() yang boleh menukar pembolehubah jenis yang berbeza kepada jenis rentetan. Apabila kita perlu menukar jenis int kepada jenis rentetan,

Bagaimana untuk mengulangi rentetan dalam python_python mengulangi tutorial rentetan Bagaimana untuk mengulangi rentetan dalam python_python mengulangi tutorial rentetan Apr 02, 2024 pm 03:58 PM

1. Mula-mula buka pycharm dan masukkan halaman utama pycharm. 2. Kemudian buat skrip python baru, klik kanan - klik baru - klik pythonfile. 3. Masukkan rentetan, kod: s="-". 4. Kemudian anda perlu mengulang simbol dalam rentetan sebanyak 20 kali, kod: s1=s*20 5. Masukkan kod output cetakan, kod: print(s1). 6. Akhir sekali jalankan skrip dan anda akan melihat nilai pulangan kami di bahagian bawah: - diulang 20 kali.

Bagaimana untuk menyemak sama ada rentetan bermula dengan aksara tertentu dalam Golang? Bagaimana untuk menyemak sama ada rentetan bermula dengan aksara tertentu dalam Golang? Mar 12, 2024 pm 09:42 PM

Bagaimana untuk menyemak sama ada rentetan bermula dengan aksara tertentu dalam Golang? Apabila pengaturcaraan di Golang, anda sering menghadapi situasi di mana anda perlu menyemak sama ada rentetan bermula dengan aksara tertentu. Untuk memenuhi keperluan ini, kita boleh menggunakan fungsi yang disediakan oleh pakej rentetan di Golang untuk mencapainya. Seterusnya, kami akan memperkenalkan secara terperinci cara menggunakan Golang untuk menyemak sama ada rentetan bermula dengan aksara tertentu, dengan contoh kod tertentu. Di Golang, kita boleh menggunakan HasPrefix daripada pakej rentetan

Bagaimana untuk menentukan sama ada rentetan Golang berakhir dengan aksara yang ditentukan Bagaimana untuk menentukan sama ada rentetan Golang berakhir dengan aksara yang ditentukan Mar 12, 2024 pm 04:48 PM

Tajuk: Bagaimana untuk menentukan sama ada rentetan berakhir dengan aksara tertentu dalam Golang Dalam bahasa Go, kadangkala kita perlu menentukan sama ada rentetan berakhir dengan aksara tertentu Ini adalah perkara biasa semasa memproses rentetan. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan fungsi ini dan memberikan contoh kod untuk rujukan anda. Mula-mula, mari kita lihat cara untuk menentukan sama ada rentetan berakhir dengan aksara tertentu dalam Golang. Aksara dalam rentetan dalam Golang boleh diperoleh melalui pengindeksan, dan panjang rentetan itu boleh

Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila menukar perenambelasan kepada rentetan dalam PHP Bagaimana untuk menyelesaikan masalah aksara Cina yang kacau apabila menukar perenambelasan kepada rentetan dalam PHP Mar 04, 2024 am 09:36 AM

Kaedah untuk menyelesaikan masalah aksara Cina yang kacau apabila menukar rentetan perenambelasan dalam PHP Dalam pengaturcaraan PHP, kadangkala kita menghadapi situasi di mana kita perlu menukar rentetan heksadesimal kepada aksara Cina biasa. Walau bagaimanapun, dalam proses penukaran ini, kadangkala anda akan menghadapi masalah aksara Cina yang kacau. Artikel ini akan memberi anda kaedah untuk menyelesaikan masalah aksara Cina yang bercelaru apabila menukar perenambelasan kepada rentetan dalam PHP dan memberikan contoh kod khusus. Gunakan fungsi hex2bin() untuk penukaran heksadesimal PHP terbina dalam fungsi hex2bin() boleh menukar 1

Cara memintas rentetan dalam bahasa Go Cara memintas rentetan dalam bahasa Go Mar 13, 2024 am 08:33 AM

Bahasa Go ialah bahasa pengaturcaraan yang berkuasa dan fleksibel yang menyediakan fungsi pemprosesan rentetan yang kaya, termasuk pemintasan rentetan. Dalam bahasa Go, kita boleh menggunakan kepingan untuk memintas rentetan. Seterusnya, kami akan memperkenalkan secara terperinci cara memintas rentetan dalam bahasa Go, dengan contoh kod khusus. 1. Gunakan penghirisan untuk memintas rentetan Dalam bahasa Go, anda boleh menggunakan ungkapan menghiris untuk memintas sebahagian daripada rentetan. Sintaks ungkapan slice adalah seperti berikut: slice:=str[start:end]where, s

Manipulasi rentetan PHP: cara praktikal untuk mengalih keluar ruang dengan berkesan Manipulasi rentetan PHP: cara praktikal untuk mengalih keluar ruang dengan berkesan Mar 24, 2024 am 11:45 AM

Operasi Rentetan PHP: Kaedah Praktikal untuk Mengalih Keluar Ruang Secara Berkesan Dalam pembangunan PHP, kita sering menghadapi situasi di mana kita perlu mengalih keluar ruang daripada rentetan. Mengalih keluar ruang boleh menjadikan rentetan lebih bersih dan memudahkan pemprosesan dan paparan data seterusnya. Artikel ini akan memperkenalkan beberapa kaedah yang berkesan dan praktikal untuk mengalih keluar ruang, dan melampirkan contoh kod tertentu. Kaedah 1: Gunakan fungsi PHP terbina dalam trim() fungsi terbina dalam PHP boleh mengalih keluar ruang pada kedua-dua hujung rentetan (termasuk ruang, tab, baris baharu, dsb.), yang sangat mudah dan mudah. untuk menggunakan.

Operasi Rentetan PHP: Buang Koma Tambahan dan Simpan Petua Pelaksanaan Koma Sahaja Operasi Rentetan PHP: Buang Koma Tambahan dan Simpan Petua Pelaksanaan Koma Sahaja Mar 28, 2024 pm 03:02 PM

Operasi Rentetan PHP: Buang Koma Tambahan dan Simpan Hanya Petua Pelaksanaan Koma Dalam pembangunan PHP, pemprosesan rentetan adalah keperluan yang sangat biasa. Kadangkala kita perlu memproses rentetan untuk mengalih keluar koma tambahan dan mengekalkan satu-satunya koma. Dalam artikel ini, saya akan memperkenalkan teknik pelaksanaan dan memberikan contoh kod konkrit. Mula-mula, mari kita lihat keperluan biasa: Katakan kita mempunyai rentetan yang mengandungi berbilang koma dan kita perlu mengalih keluar koma tambahan dan hanya menyimpan koma unik. Sebagai contoh, gantikan "apple,ba

See all articles