Heim  >  Artikel  >  Backend-Entwicklung  >  Prüft, ob alle Zeichen in einer Zeichenfolge durch Erhöhen oder Verringern gleich gemacht werden können

Prüft, ob alle Zeichen in einer Zeichenfolge durch Erhöhen oder Verringern gleich gemacht werden können

WBOY
WBOYnach vorne
2023-09-11 11:25:02802Durchsuche

Prüft, ob alle Zeichen in einer Zeichenfolge durch Erhöhen oder Verringern gleich gemacht werden können

In diesem Problem müssen wir prüfen, ob alle Zeichen der Zeichenfolge durch Vergrößerungs- und Verringerungsoperationen gleich gemacht werden können. Wir können die Gewichtung jedes Zeichens anhand seines ASCII-Werts ermitteln und prüfen, ob die Gesamtgewichtung verwendet werden kann, um alle Zeichen gleich zu machen.

Problemstellung – Wir erhalten eine Zeichenfolge str der Länge N, die Kleinbuchstaben enthält. Wir müssen prüfen, ob wir alle Zeichen in der Zeichenfolge gleich machen können, indem wir eines der beiden Zeichen auswählen, ein Zeichen erhöhen und dann das andere Zeichen um 1 verringern. Gibt nach Möglichkeit „Ja“ aus, andernfalls „Nein“.

Beispiel Beispiel

Eingabe– str = ‘aedb

output-str = 'aedb

Erklärung – „a“ kann um 2 erhöht und „e“ kann um 2 verringert werden. Gleichzeitig kann „b“ um 1 und „d“ um 1 erhöht werden. Daher kann die resultierende Zeichenfolge „cccc“ sein.

Eingabe– str = ‚abd‘

Ausgabe – „Nein“

Erklärung – Wir können nicht alle Zeichen einer Zeichenfolge durch Vergrößerungs- und Verringerungsoperationen gleich machen

Geben Sie -‘g’

ein

Ausgabe – „Ja“

Erklärung – Eine Zeichenfolge enthält nur ein einzelnes Zeichen, sodass alle Zeichenfolgenzeichen bereits gleich sind

Methode 1

Bei dieser Methode berechnen wir das Gesamtzeichengewicht der Zeichenfolge. Die Gewichtungen der Zeichen sind definiert als „a“ = 1, „b“ = 2, „c“ = 3, …, „z“ = 26. Wenn wir also das Gesamtgewicht durch die Länge der Zeichenfolge dividieren, können wir sagen, dass wir durch Erhöhen eines Zeichens und Verringern eines anderen Zeichens alle Zeichen der Zeichenfolge gleich machen.

Algorithmus

  • Definieren Sie die Variable „len“ und verwenden Sie die Methode size(), um die Größe der Zeichenfolge zu speichern.

  • Definieren Sie die Variable „totalWeight“, um das Gesamtgewicht aller Zeichen einer bestimmten Zeichenfolge zu speichern

  • Ermitteln Sie das Gewicht eines bestimmten Zeichens mithilfe des ASCII-Codes jedes Zeichens und fügen Sie ihn zur Variablen „totalWeight“ hinzu.

  • Gibt „true“ zurück, wenn der Wert von „totalWeight“ durch „len“ teilbar ist. Andernfalls wird false zurückgegeben.

Beispiel

#include <iostream>
using namespace std;

// function to check if all characters of a string can be made equal by incrementing or decrementing by 1
bool canMakeEqual(string str){
   int len = str.size();
   // store sum of ASCII values of characters
   int totalWeight = 0;
   // Iterate over the string
   for (int i = 0; i < len; i++){
      // get the ASCII value of each character
      totalWeight += str[i] - 'a' + 1;
   }
   return (totalWeight % len == 0);
}
int main(){
   string str = "aedb";
   if (canMakeEqual(str))
      cout << "Yes";
   else
      cout << "No";
   return 0;
}

Ausgabe

Yes

Zeitkomplexität – O(N), da wir über die Zeichenfolge iterieren.

Raumkomplexität – O(1), weil wir konstanten Raum verwenden.

Fazit

Wir haben gelernt, zu überprüfen, ob alle Zeichen einer Zeichenfolge gleich sein können, indem wir den ASCII-Wert des Zeichens erhöhen und verringern. Wir lösen dieses Problem im Sinne des „Gesamtgewichts“. Der Benutzer kann auch versuchen, die resultierende Zeichenfolge zu finden. Um die resultierende Zeichenfolge zu finden, suchen Sie den ASCII-Wert, der (totalWeight/len) entspricht, und fügen Sie der angegebenen Zeichenfolge „len“-Zeichen hinzu.

Das obige ist der detaillierte Inhalt vonPrüft, ob alle Zeichen in einer Zeichenfolge durch Erhöhen oder Verringern gleich gemacht werden können. 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