Rumah > Artikel > pembangunan bahagian belakang > 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.
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.
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.
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; }
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.
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.
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!