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

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

WBOY
WBOYnach vorne
2023-09-11 20:37:02739Durchsuche

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;
}

Ausgabe

The jumbled digits in the string are: 1 2 

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen