Maison > Article > développement back-end > Alternance de chaînes de voyelles et de consonnes en C/C++
À partir d'une chaîne, réorganisez les caractères de la chaîne de manière à ce que les voyelles et les consonnes occupent des positions alternées. Si la chaîne ne peut pas être réorganisée comme décrit ci-dessus, imprimez "impossible".
L'ordre entre les voyelles et l'ordre entre les consonnes doivent rester le même.
Input: abce Output: abec
Comptez le nombre de voyelles et de consonnes dans une chaîne.
Si la différence entre le nombre de voyelles et de consonnes dépasse 1, renvoyez "impossible".
S'il y a plus de voyelles que de consonnes dans la chaîne, imprimez d'abord la première voyelle, puis récurez pour les chaînes restantes.
S'il y a plus de consonnes que de voyelles dans la chaîne, imprimez d'abord la première consonne, puis récurez pour les chaînes restantes.
Si le nombre de voyelles et de consonnes est le même, comparez la première voyelle et la première consonne et imprimez d'abord la plus petite.
#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; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!