Heim > Backend-Entwicklung > C++ > Abwechselnde Vokal- und Konsonantenzeichenfolgen in C/C++

Abwechselnde Vokal- und Konsonantenzeichenfolgen in C/C++

PHPz
Freigeben: 2023-08-27 08:45:28
nach vorne
888 Leute haben es durchsucht

Abwechselnde Vokal- und Konsonantenzeichenfolgen in C/C++

Anhand einer Zeichenfolge ordnen Sie die Zeichen in der Zeichenfolge neu an, sodass Vokale und Konsonanten abwechselnde Positionen einnehmen. Wenn die Zeichenfolge nicht wie oben beschrieben neu angeordnet werden kann, geben Sie „unmöglich“ aus.

Die Reihenfolge zwischen Vokalen und die Reihenfolge zwischen Konsonanten sollte gleich bleiben.

Input: abce
Output: abec
Nach dem Login kopieren

Erklärung

  • Zählen Sie die Anzahl der Vokale und Konsonanten in einer Zeichenfolge.

  • Wenn der Unterschied in der Anzahl der Vokale und Konsonanten 1 überschreitet, geben Sie „unmöglich“ zurück.

  • Wenn die Zeichenfolge mehr Vokale als Konsonanten enthält, geben Sie zuerst den ersten Vokal aus und führen Sie dann eine Rekursion für die verbleibenden Zeichenfolgen durch.

  • Wenn die Zeichenfolge mehr Konsonanten als Vokale enthält, geben Sie zuerst den ersten Konsonanten aus und führen Sie dann eine Rekursion für die verbleibenden Zeichenfolgen durch.

  • Wenn die Anzahl der Vokale und Konsonanten gleich ist, vergleichen Sie den ersten Vokal und den ersten Konsonanten und drucken Sie zuerst den kleineren aus.

Beispiel

#include <iostream>
using namespace std;
bool isVowel(char ch) {
   if (ch == &#39;a&#39; || ch == &#39;e&#39; || ch == &#39;i&#39; ||
      ch == &#39;o&#39; || ch ==&#39;u&#39;)
   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;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAbwechselnde Vokal- und Konsonantenzeichenfolgen in C/C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage