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“.
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’
einAusgabe – „Ja“
Erklärung – Eine Zeichenfolge enthält nur ein einzelnes Zeichen, sodass alle Zeichenfolgenzeichen bereits gleich sind
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.
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.
#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; }
Yes
Zeitkomplexität – O(N), da wir über die Zeichenfolge iterieren.
Raumkomplexität – O(1), weil wir konstanten Raum verwenden.
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!