Diberi rentetan, susun semula aksara dalam rentetan supaya vokal dan konsonan menempati kedudukan berselang-seli. Jika rentetan tidak boleh disusun semula seperti yang diterangkan di atas, cetak "mustahil".
Turutan antara vokal dan susunan antara konsonan hendaklah kekal sama.
Input: abce Output: abec
Hitung bilangan vokal dan konsonan dalam rentetan.
Jika perbezaan bilangan vokal dan konsonan melebihi 1, kembalikan "mustahil".
Jika terdapat lebih banyak vokal daripada konsonan dalam rentetan, cetak vokal pertama dahulu dan kemudian ulangi untuk rentetan yang tinggal.
Jika terdapat lebih banyak konsonan daripada vokal dalam rentetan, cetak konsonan pertama dahulu dan kemudian ulangi untuk rentetan yang tinggal.
Jika bilangan vokal dan konsonan sama, bandingkan vokal pertama dan konsonan pertama dan cetak yang lebih kecil dahulu.
#include <iostream> using namespace std; bool isVowel(char ch) { if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch =='u') return true; return false; } string createAltStr(string str1, string str2, int start, int l) { string finalStr = ""; for (int i=0, j=start; j<l; i++, j++) finalStr = (finalStr + str1.at(i)) + str2.at(j); return finalStr; } string findAltStr(string str) { int nv = 0, nc = 0; string vstr = "", cstr = ""; int l = str.size(); for (int i=0; i<l; i++) { char ch = str.at(i); if (isVowel(ch)) { nv++; vstr = vstr + ch; } else { nc++; cstr = cstr + ch; } } if (abs(nv-nc) >= 2) return "no such string"; if (nv > nc) return (vstr.at(0) + createAltStr(cstr, vstr, 1, nv)); if (nc > nv) return (cstr.at(0) + createAltStr(vstr, cstr, 1, nc)); if (cstr.at(0) < vstr.at(0)) return createAltStr(cstr, vstr, 0, nv); return createAltStr(vstr, cstr, 0, nc); } int main() { string str = "abde"; cout << findAltStr(str); return 0; }
Atas ialah kandungan terperinci Rentetan vokal dan konsonan berselang seli dalam C/C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!