Inhaltsverzeichnis
Problemstellung
Beispiel
Eintreten
Ausgabe
Erklärung
Methode 2
Algorithmus
Fazit
Heim Backend-Entwicklung C++ Die lexikografisch größte Zeichenfolge, deren Summe der Zeichen gleich N ist

Die lexikografisch größte Zeichenfolge, deren Summe der Zeichen gleich N ist

Sep 17, 2023 pm 03:45 PM
字典顺序 maximale Zeichenfolge Summe der Zeichen

Die lexikografisch größte Zeichenfolge, deren Summe der Zeichen gleich N ist

Problemstellung

Wir erhalten eine positive ganze Zahl. Wir müssen eine Zeichenfolge finden, die aus Kleinbuchstaben besteht, sodass die Summe aller Zeichen in der Zeichenfolge gleich num ist und die Zeichenfolge in lexikografischer Reihenfolge die größte ist. Hier ist „a“ = 1, „b“ = 2, „c“ = 3, „d“ = 4, …, „z“ = 26.

Wir müssen das Zeichen „z“ am Anfang der Zeichenfolge verwenden, um die größte Wörterbuchzeichenfolge zu erstellen. Schließlich müssen wir das letzte Zeichen basierend auf dem Wert „num % 26“ verwenden.

Beispiel

Eintreten

num = 30
Nach dem Login kopieren

Ausgabe

‘zd’
Nach dem Login kopieren
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

‘zd‘ ist die größte lexikografische Zeichenfolge mit einer Zeichensumme von 30 (z = 26 + d = 4).

Eintreten

3
Nach dem Login kopieren

Ausgabe

‘c’
Nach dem Login kopieren
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

‘c‘ repräsentiert 3 selbst.

Eintreten

130
Nach dem Login kopieren

Ausgabe

‘zzzzz’
Nach dem Login kopieren
Die chinesische Übersetzung von

Erklärung

lautet:

Erklärung

Die Summe der Werte jedes Zeichens „zzzzz“ beträgt 130.

Methode 1

Diese Methode verwendet eine While-Schleife, um eine resultierende Zeichenfolge zu erstellen. Wir iterieren, bis eine Zahl einen Wert größer oder gleich 26 hat. Bei jeder Iteration fügen wir „z“ zur Zeichenfolge hinzu und subtrahieren 26 von der Zahl. Abschließend fügen wir basierend auf dem Rest ein Zeichen zur Zeichenfolge hinzu.

Algorithmus

  • Schritt 1 – Führen Sie die Funktion findString() aus, indem Sie einen numerischen Wert als Parameter übergeben.

  • Schritt 2 – Initialisieren Sie die Ergebnisvariable vom Typ „String“ mit einer leeren Zeichenfolge, um die Ergebniszeichenfolge zu speichern.

  • Schritt 3 – Verwenden Sie eine While-Schleife, um zu iterieren, bis der Wert von „num“ größer oder gleich 26 ist.

  • Schritt 4 – Fügen Sie in der while-Schleife das Zeichen „z“ zur resultierenden Zeichenfolge hinzu.

  • Schritt 5 – Subtrahiere 26 vom Wert einer Zahl.

  • Schritt 6 – Wenn die While-Schleifeniteration abgeschlossen ist, prüfen Sie, ob der Wert von num größer als 0 ist. Wenn ja, hängen Sie das letzte Zeichen basierend auf dem Wert der Variablen „num“ an die Zeichenfolge an.

  • Schritt 7 – Rückgabe der Ergebniszeichenfolge.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <bits/stdc++.h>
using namespace std;

// function to find the resultant string
string findString(int num) {
   // variable to store the resultant string
   string result = "";
   // using a while loop to find the resultant string
   while (num >= 26) {
      // append z to the resultant string
      result += 'z';
      // Decrease the number by 26
      num -= 26;
   }
   // Convert the remaining number to char and append to the resultant string
   if(num != 0) {
      result += char(num + 'a' - 1);
   }
   return result;
}

int main() {
   int num = 96;
   cout << "The resultant string is " << findString(num);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The resultant string is zzzr
Nach dem Login kopieren
  • Zeitkomplexität - O(num), da die while-Schleife num/26 Mal ausgeführt wird, was gleich O(num) ist.

  • Raumkomplexität - O(num), da eine Zeichenfolge höchstens (num/26 + 1) Zeichen enthalten kann.

Methode 2

In dieser Methode erstellen wir mit dem String()-Konstruktor einen String der Länge N. Wir verwenden Modulo- und Divisionsoperatoren, um die Gesamtzahl der Zs in der Zeichenfolge zu ermitteln.

Algorithmus

  • Schritt 1 – Definieren Sie die Variable „totalZ“ und initialisieren Sie sie mit num/26.

  • Schritt 2 – Definieren Sie die Variable „rem“ und initialisieren Sie sie mit „num%26“.

  • Schritt 3 – Verwenden Sie dies, um eine Zeichenfolge mit „totalZ“ und „z“-Zeichen zu erstellen, indem Sie „totalZ“ als erstes Argument und „z“ als zweites Argument an den string()-Konstruktor String übergeben. Hängen Sie es gleichzeitig an die Zeichenfolge „result“ an.

  • Schritt 4 – Wenn der Wert von „rem“ nicht gleich 0 ist, hängen Sie das letzte Zeichen basierend auf dem Wert der Variablen „rem“ an die Zeichenfolge an.

    < /里>
  • Schritt 5 – Geben Sie die Ergebniszeichenfolge zurück.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <bits/stdc++.h>
using namespace std;
// function to find the resultant string
string findString(int num) {
   // variable to store the resultant string
   string result = "";
   // variable to store the number of z's
   int totalZ = num / 26;
   // variable to store the remainder
   int rem = num % 26;
   // Using the string constructor to create a string with total number of totalZ 'z'.
   result += string(totalZ, 'z');
   // If the remainder is non-zero, then add the corresponding character
   if(rem != 0) {
      result += char(rem + 'a' - 1);
   }
   return result;
}
int main(){
   int num = 52;
   cout << "The resultant string is " << findString(num);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The resultant string is zz
Nach dem Login kopieren
  • Zeitkomplexität - O(num) Erstellen Sie als String-Konstruktor einen String mit totalz Zeichen.

  • Raumkomplexität - O(num)

Fazit

Wir haben zwei Möglichkeiten kennengelernt, Zahlen in Zeichenfolgen umzuwandeln. Wir haben in der ersten Methode eine while-Schleife und in der zweiten Methode den string()-Konstruktor verwendet. Allerdings haben beide Methoden die gleiche räumliche und zeitliche Komplexität, die zweite Methode ist jedoch besser lesbar.

Das obige ist der detaillierte Inhalt vonDie lexikografisch größte Zeichenfolge, deren Summe der Zeichen gleich N ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

In diesem Artikel werden die C -Standard -Vorlagenbibliothek (STL) erläutert, die sich auf seine Kernkomponenten konzentriert: Container, Iteratoren, Algorithmen und Funktoren. Es wird beschrieben, wie diese interagieren, um die generische Programmierung, die Verbesserung der Codeeffizienz und die Lesbarkeit t zu ermöglichen

C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken C Sprachdatenstruktur: Datenrepräsentation und Betrieb von Bäumen und Grafiken Apr 04, 2025 am 11:18 AM

C Sprachdatenstruktur: Die Datenrepräsentation des Baumes und des Diagramms ist eine hierarchische Datenstruktur, die aus Knoten besteht. Jeder Knoten enthält ein Datenelement und einen Zeiger auf seine untergeordneten Knoten. Der binäre Baum ist eine besondere Art von Baum. Jeder Knoten hat höchstens zwei Kinderknoten. Die Daten repräsentieren structTreenode {intdata; structTreenode*links; structTreenode*rechts;}; Die Operation erstellt einen Baumtraversalbaum (Vorbereitung, in Ordnung und späterer Reihenfolge) Suchbauminsertion-Knoten Lösches Knotendiagramm ist eine Sammlung von Datenstrukturen, wobei Elemente Scheitelpunkte sind, und sie können durch Kanten mit richtigen oder ungerechten Daten miteinander verbunden werden, die Nachbarn darstellen.

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Dieser Artikel beschreibt die effiziente Verwendung von STL -Algorithmus in c. Es betont die Auswahl der Datenstruktur (Vektoren vs. Listen), Algorithmus -Komplexitätsanalyse (z. B. std :: sortieren vs. std :: partial_sort), Iteratoranwendungen und parallele Ausführung. Häufige Fallstricke wie

Wie verwende ich RValue -Referenzen effektiv in C? Wie verwende ich RValue -Referenzen effektiv in C? Mar 18, 2025 pm 03:29 PM

Artikel erörtert den effektiven Einsatz von RValue -Referenzen in C für Bewegungssemantik, perfekte Weiterleitung und Ressourcenmanagement, wobei Best Practices und Leistungsverbesserungen hervorgehoben werden. (159 Charaktere)

Wie verwende ich Bereiche in C 20 für ausdrucksstärkere Datenmanipulationen? Wie verwende ich Bereiche in C 20 für ausdrucksstärkere Datenmanipulationen? Mar 17, 2025 pm 12:58 PM

C 20 -Bereiche verbessern die Datenmanipulation mit Ausdruckskraft, Komposition und Effizienz. Sie vereinfachen komplexe Transformationen und integrieren sich in vorhandene Codebasen, um eine bessere Leistung und Wartbarkeit zu erhalten.

Wie gehe ich effektiv mit Ausnahmen in C um? Wie gehe ich effektiv mit Ausnahmen in C um? Mar 12, 2025 pm 04:56 PM

In diesem Artikel wird die effektive Ausnahmebehandlung in C, Covering Try, Catch und Wurp Mechanics, beschrieben. Es betont Best Practices wie Raii, die Vermeidung unnötiger Fangblöcke und die Protokollierung von Ausnahmen für robusten Code. Der Artikel befasst sich auch mit Perf

Wie verwende ich die Semantik in C, um die Leistung zu verbessern? Wie verwende ich die Semantik in C, um die Leistung zu verbessern? Mar 18, 2025 pm 03:27 PM

In dem Artikel wird die Verwendung von Move Semantics in C erörtert, um die Leistung zu verbessern, indem unnötiges Kopieren vermieden wird. Es umfasst die Implementierung von Bewegungskonstruktoren und Zuordnungsbetreibern unter Verwendung von STD :: MOVE

Wie funktioniert der dynamische Versand in C und wie wirkt sich dies auf die Leistung aus? Wie funktioniert der dynamische Versand in C und wie wirkt sich dies auf die Leistung aus? Mar 17, 2025 pm 01:08 PM

In dem Artikel wird der dynamische Versand in C, seine Leistungskosten und Optimierungsstrategien erörtert. Es unterstreicht Szenarien, in denen der dynamische Versand die Leistung beeinflusst, und vergleicht sie mit statischer Versand, wobei die Kompromisse zwischen Leistung und Betonung betont werden

See all articles