Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyemak sama ada semua aksara dalam rentetan boleh dibuat sama dengan menambah atau mengurangkan

Menyemak sama ada semua aksara dalam rentetan boleh dibuat sama dengan menambah atau mengurangkan

WBOY
WBOYke hadapan
2023-09-11 11:25:02849semak imbas

Menyemak sama ada semua aksara dalam rentetan boleh dibuat sama dengan menambah atau mengurangkan

Dalam masalah ini, kita perlu menyemak sama ada semua aksara rentetan boleh dibuat sama dengan menambah dan mengurangkan operasi. Kita boleh mendapatkan berat setiap aksara berdasarkan nilai ASCIInya dan menyemak sama ada jumlah berat boleh digunakan untuk menjadikan semua aksara sama.

Pernyataan Masalah – Kami diberi rentetan rentetan panjang N yang mengandungi aksara abjad huruf kecil. Kita perlu menyemak sama ada kita boleh membuat semua aksara dalam rentetan sama dengan memilih salah satu daripada dua aksara, meningkatkan satu aksara, dan kemudian mengurangkan aksara lain sebanyak 1. Mencetak "ya" jika boleh, jika tidak mencetak "tidak".

CONTOHCONTOH

Enter – str = ‘aedb

Output-str = ‘aedb

Penjelasan - ‘a’ boleh meningkat sebanyak 2 dan ‘e’ boleh berkurangan sebanyak 2. Pada masa yang sama, 'b' boleh ditambah dengan 1 dan 'd' boleh ditambah dengan 1. Oleh itu, rentetan yang terhasil boleh menjadi 'cccc'.

Enter – str = ‘abd’

Output-“Tidak”

Penjelasan – Kita tidak boleh menjadikan semua aksara rentetan sama dengan menambah dan mengurangkan operasi

Masuk -‘g’

Output - ‘Ya’

Penjelasan – Rentetan mengandungi hanya satu aksara, jadi semua aksara rentetan sudah sama

kaedah satu

Dalam kaedah ini, kami akan mengira jumlah berat aksara rentetan. Wajaran aksara ditakrifkan sebagai ‘a’ = 1, ‘b’ = 2, ‘c’ = 3, …, ‘z’ = 26. Jadi jika kita membahagikan jumlah berat dengan panjang rentetan, kita boleh mengatakan bahawa dengan menambah satu aksara dan mengurangkan satu lagi, kita menjadikan semua aksara rentetan itu sama.

Algoritma

  • Tentukan pembolehubah "len" dan gunakan kaedah size() untuk menyimpan saiz rentetan.

  • Takrifkan pembolehubah "totalWeight" untuk menyimpan jumlah berat semua aksara rentetan tertentu​​

  • Dapatkan berat aksara tertentu menggunakan kod ASCII setiap aksara dan tambahkannya pada pembolehubah "totalWeight".

  • Kembalikan benar jika nilai "totalWeight" boleh dibahagi dengan "len". Jika tidak, pulangan palsu.

Contoh

#include <iostream>
using namespace std;

// function to check if all characters of a string can be made equal by incrementing or decrementing by 1
bool canMakeEqual(string str){
   int len = str.size();
   // store sum of ASCII values of characters
   int totalWeight = 0;
   // Iterate over the string
   for (int i = 0; i < len; i++){
      // get the ASCII value of each character
      totalWeight += str[i] - 'a' + 1;
   }
   return (totalWeight % len == 0);
}
int main(){
   string str = "aedb";
   if (canMakeEqual(str))
      cout << "Yes";
   else
      cout << "No";
   return 0;
}

Output

Yes

Kerumitan masa - O(N), kerana kita mengulangi rentetan.

Kerumitan ruang - O(1) kerana kami menggunakan ruang malar.

KESIMPULAN

Kami belajar untuk menyemak sama ada semua aksara rentetan boleh sama dengan menambah dan mengurangkan nilai ASCII aksara itu. Kami menyelesaikan masalah ini dari segi "jumlah berat". Pengguna juga boleh cuba mencari rentetan yang terhasil. Untuk mencari rentetan yang terhasil, cari nilai ASCII yang sepadan dengan (totalWeight/len) dan tambahkan aksara "len" pada rentetan yang diberikan.

Atas ialah kandungan terperinci Menyemak sama ada semua aksara dalam rentetan boleh dibuat sama dengan menambah atau mengurangkan. 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