Rumah >pembangunan bahagian belakang >C++ >Susun semula rentetan untuk memaksimumkan jarak minimum antara mana-mana pasangan vokal

Susun semula rentetan untuk memaksimumkan jarak minimum antara mana-mana pasangan vokal

王林
王林ke hadapan
2023-09-11 19:49:031141semak imbas

Susun semula rentetan untuk memaksimumkan jarak minimum antara mana-mana pasangan vokal

Dalam artikel ini, kami akan merungkai masalah menarik dari bidang manipulasi rentetan: "Susun semula rentetan untuk memaksimumkan jarak minimum antara mana-mana pasangan vokal". Masalah ini mencabar kami untuk memanipulasi susunan aksara dalam rentetan untuk memastikan jarak minimum yang terbesar mungkin antara mana-mana dua aksara vokal. Kami akan membincangkan isu ini secara terperinci, menyediakan pelaksanaan kod C++, dan menggambarkan dengan contoh.

Memahami penyataan masalah

Diberi rentetan, tugasnya adalah untuk menyusun semula aksara dalam rentetan supaya jarak minimum antara mana-mana pasangan vokal dimaksimumkan. Dalam erti kata lain, kami mahu vokal berada sejauh mungkin antara satu sama lain.

Vokal dalam bahasa Inggeris ialah "a", "e", "i", "o", "u" dan versi huruf besarnya.

Kaedah

Untuk menyelesaikan masalah ini, kami akan mengambil pendekatan dua langkah -

Pertama, kira bilangan vokal dalam rentetan dan simpan kedudukannya dalam tatasusunan.

Seterusnya, susun tatasusunan dan kira perbezaan maksimum antara mana-mana dua elemen berturut-turut. Perbezaan ini mewakili jarak maksimum dan minimum antara mana-mana pasangan vokal.

Contoh

Mari laksanakan strategi ini dalam C++ -

#include <bits/stdc++.h>
using namespace std;

// Function to check if a character is a vowel
bool isVowel(char c) {
   return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
      c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';
}

// Function to find maximum minimum distance between vowels
int maxMinDist(string s) {
   vector<int> pos;
   for (int i = 0; i < s.size(); i++) {
      if (isVowel(s[i])) pos.push_back(i);
   }
   sort(pos.begin(), pos.end());
   int maxDist = 0;
   for (int i = 1; i < pos.size(); i++) {
      maxDist = max(maxDist, pos[i] - pos[i-1]);
   }
   return maxDist;
}

int main() {
   string s = "programming";
   cout << "Max minimum distance between vowels: " << maxMinDist(s);
   return 0;
}

Output

Max minimum distance between vowels: 3

Kod ini mula-mula mencari kedudukan semua vokal dalam rentetan dan menyimpannya dalam vektor. Kemudian, ia mengisih vektor ini dan mencari perbezaan maksimum antara elemen berturut-turut. Perbezaan ini mewakili jarak maksimum dan minimum antara mana-mana pasangan vokal.

Kes Ujian

Mari kita pertimbangkan rentetan "pengaturcaraan". Kedudukan vokal "o", "a" dan "i" masing-masing ialah 1, 4 dan 7. Oleh itu, jarak maksimum dan minimum antara mana-mana pasangan vokal ialah 3.

Kesimpulan

Artikel ini menyediakan pendekatan langkah demi langkah untuk masalah memaksimumkan jarak minimum antara mana-mana pasangan vokal dalam rentetan tertentu. Penyelesaiannya melibatkan mengira vokal, menyimpan kedudukannya, dan kemudian mencari perbezaan maksimum antara kedudukan tersebut. Walaupun masalah itu mungkin kelihatan rumit pada pandangan pertama, ia sangat dipermudahkan apabila dipecahkan kepada langkah-langkah ini.

Atas ialah kandungan terperinci Susun semula rentetan untuk memaksimumkan jarak minimum antara mana-mana pasangan vokal. 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