Heim > Backend-Entwicklung > C++ > Gegeben sei eine Zeichenfolge, in der Buchstaben verschlüsselte Zahlen darstellen

Gegeben sei eine Zeichenfolge, in der Buchstaben verschlüsselte Zahlen darstellen

WBOY
Freigeben: 2023-09-11 20:37:02
nach vorne
821 Leute haben es durchsucht

Gegeben sei eine Zeichenfolge, in der Buchstaben verschlüsselte Zahlen darstellen

Im heutigen Artikel werden wir uns mit einem einzigartigen Problem im Zusammenhang mit String-Operationen in C++ befassen. Diese Frage lautet: „In der angegebenen Zeichenfolge besteht der alphabetische Ausdruck aus verschlüsselten Zahlen.“ Diese Frage kann als gute Übung zur Verbesserung Ihrer Fähigkeiten zur Zeichenfolgenmanipulation und Datenstruktur in C++ dienen.

Problemstellung

Anhand einer Zeichenfolge besteht die Aufgabe darin, Zahlen zu identifizieren, in denen Buchstabenausdrücke verschlüsselt sind. Wenn die Eingabezeichenfolge beispielsweise „oentow“ lautet, enthält sie eine alphabetische Darstellung der Zahl 2 (t, w, o) und der Zahl 1 (o, n, e), verschlüsselt.

C++-Lösungsmethode

Um dieses Problem zu lösen, verwenden wir eine Hash-Tabelle oder eine ungeordnete Karte in C++, um die Häufigkeit der Buchstaben in der Zeichenfolge zu speichern. Anschließend vergleichen wir diese Häufigkeitskarte mit einer vordefinierten Karte der alphabetischen Darstellung jeder Zahl. Wenn aus der Eingabezeichenfolge eine Darstellung einer Zahl gebildet werden kann, geben wir diese Zahl aus.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

Dies ist der C++-Code zur Lösung des Problems −

#include <iostream>
#include <unordered_map>
#include <vector>

// Array of digit representations
std::string digitRepresentations[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};

std::unordered_map<char, int> generateFrequencyMap(std::string str) {
   std::unordered_map<char, int> freqMap;
   for (char c : str) {
      freqMap[c]++;
   }
   return freqMap;
}

std::vector<int> findJumbledDigits(std::string str) {
   std::unordered_map<char, int> strFreqMap = generateFrequencyMap(str);
   std::vector<int> digits;
   
   for (int i = 0; i < 10; i++) {
      std::unordered_map<char, int> digitFreqMap = generateFrequencyMap(digitRepresentations[i]);
      bool canFormDigit = true;
   
      for (auto pair : digitFreqMap) {
         if (strFreqMap[pair.first] < pair.second) {
               canFormDigit = false;
               break;
         }
      }
   
      if (canFormDigit) {
         digits.push_back(i);
      }
   }

   return digits;
}

int main() {
   std::string input = "oentow";
   std::vector<int> digits = findJumbledDigits(input);
   
   std::cout << "The jumbled digits in the string are: ";
   for (int digit : digits) {
      std::cout << digit << " ";
   }

   return 0;
}
Nach dem Login kopieren

Ausgabe

The jumbled digits in the string are: 1 2 
Nach dem Login kopieren

Erklärung mit einem Testfall

wird übersetzt als:

Erklärung mit einem Testfall

Betrachten wir die Zeichenfolge „oentow“.

Wenn diese Zeichenfolge an die Funktion findJumbledDigits übergeben wird, generiert sie zunächst eine Häufigkeitskarte für die Zeichenfolge: {'o': 2, 'e': 1, 'n': 1, 't': 1, 'w': 1}.

Dann wird für jede Zahl von 0 bis 9 eine Häufigkeitskarte der alphabetischen Darstellung der Zahl generiert und geprüft, ob diese Karte aus der Häufigkeitskarte der Zeichenfolge gebildet werden kann.

Die Darstellung „eins“ der Zahl 1 hat die Häufigkeitszuordnung {'o': 1, 'n': 1, 'e': 1}, während die Darstellung „zwei“ der Zahl 2 die Häufigkeitszuordnung {' t': 1 , 'w': 1, 'o': 1}.

Diese beiden können durch eine Frequenzkarte von Zeichenfolgen generiert werden, daher addieren wir diese Zahlen zum Ergebnis.

Abschließend wird das Ergebnis ausgegeben: „Die durcheinandergebrachten Ziffern in der Zeichenfolge sind: 1 2“.

Fazit

Diese Frage zeigt, wie wir die Frequenzzuordnung verwenden können, um komplexe String-Manipulationsprobleme in C++ zu lösen. Dies ist eine großartige Frage, um Ihre Fähigkeiten im Umgang mit Zeichenfolgen und Datenstrukturen zu üben. Üben Sie weiterhin Fragen wie diese, um Ihre C++-Programmierkenntnisse zu verbessern.

Das obige ist der detaillierte Inhalt vonGegeben sei eine Zeichenfolge, in der Buchstaben verschlüsselte Zahlen darstellen. 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