Heim > Backend-Entwicklung > C++ > Hauptteil

Ersetzen Sie mit einem C++-Programm alle Konsonanten in der Zeichenfolge durch den nächsten Vokal

WBOY
Freigeben: 2023-09-11 10:17:02
nach vorne
970 Leute haben es durchsucht

Ersetzen Sie mit einem C++-Programm alle Konsonanten in der Zeichenfolge durch den nächsten Vokal

Diese Methode zielt darauf ab, eine Folge von Konsonanten durch die nächsten Vokale im Alphabet (auch als lateinische Kleinbuchstaben bezeichnet) zu ersetzen. Wenn zwei Vokale gleich nahe beieinander liegen, können wir sie durch den ersten Vokal in diesen Buchstaben ersetzen.

Schauen wir uns einige Eingabeszenarien an -

Angenommen, wir haben eine Zeichenfolge wie „ebgkjasjd“, jetzt müssen wir alle Vorkommen von Konsonanten in der Zeichenfolge durch die nächsten Vokale ersetzen.

Input = "ebgkjasjd";
Result =
ebgkjasjd
eaeiiauie
Nach dem Login kopieren

Ersetzen Sie das Element „b“ durch „a“, da es der nächste Vokal ist. Wir hätten das Element „g“ durch „e“ oder „i“ ersetzen können, da beide gleich aktuell sind, aber wir entscheiden uns dafür, es durch „e“ zu ersetzen, da es zuerst kam. Das Gleiche gilt für alle anderen Elemente in der Zeichenfolge.

Angenommen, die Eingabezeichenfolge enthält beispielsweise keine Vokale, betrachten Sie eine Zeichenfolge: „sdfhgtykl“, die resultierende Ausgabe ist -

Input = "sdfhgtykl";
Result =
sdfhgtykl
ueeieuuii
Nach dem Login kopieren

Für das erste Element „s“ kommt der Vokal „u“ am nächsten, also ersetzen Sie „s“ durch „u“. Wie alle anderen Elemente im Array sind sie Konsonanten. Diese Situation ergibt auch die Worst-Case-Komplexität der Methode.

Algorithmus

  • Durchlaufen Sie die Eingabezeichenfolge ausgehend vom Startindex.

  • Wenn ein Konsonant angetroffen wird, wird die Anzahl der Buchstaben von diesem Konsonanten bis zu den beiden nächsten Vokalen links und rechts gezählt. Wählen Sie Vokale mit weniger Buchstaben.

  • Dieser Vorgang wird wiederholt, bis alle Konsonanten in der Zeichenfolge durchlaufen wurden.

  • Die erhaltene Ausgabe ist die ersetzte Zeichenfolge.

Beispiel

Der folgende Code ist in C++ implementiert, um alle Konsonanten in einer Zeichenfolge durch die nächsten Vokale im Alphabet zu ersetzen -

#include <iostream>
using namespace std;
void solve(string& s) {
   for(char &ch : s) {
      if(ch>'a' && ch<'e') {
         if(ch-'a' <= 'e'-ch) ch='a';
         else ch='e';
      } else if(ch>'e' && ch<'i') {
         if(ch-'e' <= 'i'-ch) ch='e';
         else ch='i';
      } else if(ch>'i' && ch<'o') {
         if(ch-'i' <= 'o'-ch) ch='i';
         else ch='o';
      } else if(ch>'o' && ch<'u') {
         if(ch-'o' <= 'u'-ch) ch='o';
         else ch='u';
      } else if(ch>'u') {
         ch = 'u';
      }
   }
}
int main() {
   string s = "ibgshzjbsh";
   cout << s << "\n";
   solve(s);
   cout << s;
   return 0;
}
Nach dem Login kopieren

Ausgabe

“ibgshzjbsh”
“iaeuiuiaui”
Nach dem Login kopieren

Beispiel

Ein besserer Ansatz besteht jedoch darin, ein Array zu verwenden und für jedes Zeichen die Antwort mit dem nächsten Zeichen zu speichern, anstatt viele Wenn-Sonst-Bedingungen zu verwenden.

#include <iostream>
#include <vector>
using namespace std;
string solve(string s) {
   string hash = "aaaeeeeiiiiioooooouuuuuuuu";
   for (int i=0;i<s.size();i++) {
      s[i] = hash[s[i]-'a'];
   }
   return s;
}
int main() {
   string s = "ibgshzjbsh";
   cout << solve(s);
   return 0;
}
Nach dem Login kopieren

Ausgabe

iaeuiuiaui
Nach dem Login kopieren

Fazit

Wir können ein Element ersetzen, indem wir es finden und durch das nächstgelegene Zeichen ersetzen. Die zeitliche Komplexität des Durchlaufens einer Zeichenfolge beträgt O(n). Die zweite Methode ist einfacher zu verstehen und zu programmieren und weniger umständlich. Die zeitliche Komplexität beträgt ebenfalls O(n), da wir die Zeichenfolge nur einmal durchlaufen.

Das obige ist der detaillierte Inhalt vonErsetzen Sie mit einem C++-Programm alle Konsonanten in der Zeichenfolge durch den nächsten Vokal. 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