Heim >Backend-Entwicklung >C++ >Überprüfen Sie, ob Großbuchstaben in einer Zeichenfolge korrekt verwendet werden
Wir erhalten eine Zeichenfolge „str“, die Groß- oder Kleinbuchstaben enthält. Wir müssen prüfen, ob die Verwendung von Großbuchstaben in der Zeichenfolge korrekt ist.
Hier erfahren Sie, wie Sie Großbuchstaben in Zeichenfolgen richtig verwenden.
Wenn nur das erste Zeichen ein Großbuchstabe ist, sind die anderen Zeichen Kleinbuchstaben.
Wenn alle Zeichen der Zeichenfolge Kleinbuchstaben sind.
Wenn alle Zeichen der Zeichenfolge Großbuchstaben sind.
"Hello"
"valid"Die chinesische Übersetzung von
In „Hallo“ ist nur das erste Zeichen großgeschrieben und die anderen Zeichen sind kleingeschrieben, es handelt sich also um eine gültige Zeichenfolge.
'hello'
'valid'Die chinesische Übersetzung von
In der Zeichenfolge „Hallo“ sind alle Zeichen kleingeschrieben, es handelt sich also um eine gültige Zeichenfolge.
‘heLLO’
‘Not Valid’Die chinesische Übersetzung von
In der Zeichenfolge „heLLO“ ist das erste Zeichen ein Kleinbuchstabe, aber die letzten 3 Zeichen sind Großbuchstaben, sodass diese Zeichenfolge ungültig ist.
Wenn bei dieser Methode das erste Zeichen ein Kleinbuchstabe ist, prüfen wir, ob alle Zeichen der Zeichenfolge Kleinbuchstaben sind und geben einen booleschen Wert zurück. Wenn das erste Zeichen ein Großbuchstabe ist, prüfen wir, ob alle anderen Zeichen Groß- oder Kleinbuchstaben sind und geben einen booleschen Wert zurück.
Schritt 1 – Definieren Sie die Funktion isLower(), die ein einzelnes Zeichen als Argument verwendet und einen booleschen Wert zurückgibt, unabhängig davon, ob das Zeichen kleingeschrieben ist oder nicht. Wenn „Zeichen-A“ größer oder gleich 32 ist, handelt es sich um ein Kleinbuchstabe.
Schritt 2 – Definieren Sie die Funktion isUpper() genau wie die Funktion isLower() und geben Sie einen booleschen Wert zurück, basierend darauf, ob das Zeichen ein Großbuchstabe ist oder nicht.
Schritt 3 – Definieren Sie die Funktion isValidUpper(), die prüft, ob eine Zeichenfolge alle gültigen Großbuchstaben enthält.
Schritt 4 – Verwenden Sie in der Funktion isValidUpper() die Funktion isLower() und prüfen Sie, ob das erste Zeichen ein Kleinbuchstabe ist. Wenn ja, verwenden Sie eine Schleife und die Funktion isUpper(), um nach allen anderen Zeichen zu suchen. Gibt „false“ zurück, wenn Zeichen in Großbuchstaben geschrieben sind. Andernfalls wird „true“ zurückgegeben, wenn alle Zeichen Kleinbuchstaben sind.
Schritt 5 – Wenn das erste Zeichen ein Großbuchstabe ist, müssen Sie zwei Groß- und Kleinschreibung überprüfen. Der erste Fall besteht darin, dass alle Zeichen Großbuchstaben sein können oder alle bis auf das erste Zeichen Kleinbuchstaben sein können.
Schritt 5.1 – Variable „totalUpper“ definieren und auf 1 initialisieren.
Schritt 5.2 − Zählen Sie die Gesamtzahl der Großbuchstaben in der Zeichenfolge.
Schritt 5.3 – Gibt „true“ zurück, wenn die Gesamtzahl der Großbuchstaben gleich 1 oder der Länge der Zeichenfolge ist, was darauf hinweist, dass die Zeichenfolge gültige Großbuchstaben enthält. Andernfalls wird false zurückgegeben.
#include <bits/stdc++.h> using namespace std; // Check if character c is in lowercase or not bool isLower(char c){ return c - 'A' >= 32; } // Check if character c is in uppercase or not bool isUpper(char c){ return c - 'A' < 32; } bool isValidUpperCase(string str){ int len = str.size(); // If the first character is in lowercase, check whether all the other characters are in lowercase or not. // If not, return false. Otherwise, return true. if (isLower(str[0])) { for (int i = 1; i < len; i++) { if (isUpper(str[i])) return false; } return true; } else { // If the first character is in uppercase, find the total number of uppercase characters int totalUpper = 1; for (int i = 1; i < len; i++){ if (isUpper(str[i])) totalUpper++; } // if the total number of uppercase characters is equal to the length of the string or 1, return true. Otherwise, return false. if (totalUpper == len || totalUpper == 1) return true; else return false; } } int main(){ string str1 = "TutorialsPoint"; string str2 = "tutorialspoint"; string str3 = "Tutorialspoint"; string str4 = "TUTORIALSPOINT"; cout << str1 << " : " << (isValidUpperCase(str1) ? "Valid" : "Not valid") << endl; cout << str2 << " : " << (isValidUpperCase(str2) ? "Valid" : "Not valid") << endl; cout << str3 << " : " << (isValidUpperCase(str3) ? "Valid" : "Not valid") << endl; cout << str4 << " : " << (isValidUpperCase(str4) ? "Valid" : "Not valid") << endl; return 0; }
TutorialsPoint : Not valid tutorialspoint : Valid Tutorialspoint : Valid TUTORIALSPOINT : Valid
Zeitkomplexität − O(N), da zum Durchlaufen der Zeichenfolge die Verwendung einer Schleife erforderlich ist. Die Zeitkomplexität der Funktionen isLower() und isUpper() beträgt O(1).
Raumkomplexität − O(1), da kein zusätzlicher Raum benötigt wird.
In der folgenden Methode haben wir den Code der ersten Methode optimiert. Hier prüfen wir, ob die Zeichenfolge gültige Großbuchstaben enthält, indem wir prüfen, ob zwei benachbarte Elemente in der Zeichenfolge außer den ersten beiden Zeichen die gleiche Groß-/Kleinschreibung haben.
Schritt 1 − Verwenden Sie eine for-Schleife, um vom ersten Index zum letzten Index der Zeichenfolge zu iterieren.
Schritt 2 – Wenn in der for-Schleife das aktuelle Zeichen ein Großbuchstabe und das vorherige Zeichen ein Kleinbuchstabe ist, geben Sie „false“ zurück, da es sich nicht um eine gültige Zeichenfolge handelt.
Schritt 3 − Wenn das aktuelle Zeichen ein Kleinbuchstabe und das vorherige Zeichen ein Großbuchstabe ist, führen Sie die folgenden Schritte aus.
Schritt 3.1 – Überprüfen Sie, ob sich das vorherige Zeichen am 0. Index oder am ersten Zeichen in der Zeichenfolge befindet, und fahren Sie in der for-Schleife fort.
Schritt 3.2 − Wenn das vorherige Zeichen nicht das erste Zeichen ist, geben Sie false zurück.
#include <bits/stdc++.h> using namespace std; bool isValidUpperCase(string str){ for (int i = 1; i < str.length(); i++){ // If str[i] is in lower case and str[i-1] is in upper case, handle the case if (str[i] - 'A' >= 32 && str[i - 1] - 'A' < 32) { // If the str[i-1] is the first character, continue the loop. Otherwise, return false. if (i - 1 == 0) continue; return false; } // If str[i] is in upper case and str[i-1] is in lower case, return false. else if (str[i] - 'A' < 32 && str[i - 1] - 'A' >= 32) { return false; } } // Return true return true; } int main(){ string str1 = "TutorialsPoint"; string str2 = "tutorialspoint"; string str3 = "Tutorialspoint"; string str4 = "TUTORIALSPOINT"; cout << str1 << " : " << (isValidUpperCase(str1) ? "Valid" : "Not valid") << endl; cout << str2 << " : " << (isValidUpperCase(str2) ? "Valid" : "Not valid") << endl; cout << str3 << " : " << (isValidUpperCase(str3) ? "Valid" : "Not valid") << endl; cout << str4 << " : " << (isValidUpperCase(str4) ? "Valid" : "Not valid") << endl; return 0; }
TutorialsPoint : Not valid tutorialspoint : Valid Tutorialspoint : Valid TUTORIALSPOINT : Valid
Zeitkomplexität - O(N), da zum Durchlaufen der Zeichenfolge die Verwendung einer Schleife erforderlich ist.
Raumkomplexität − O(1), da kein zusätzlicher Raum benötigt wird.
In diesem Tutorial hat der Benutzer gelernt, zu überprüfen, ob eine Zeichenfolge gültige Großbuchstaben enthält. Wir haben zwei verschiedene Methoden gelernt. Im ersten Ansatz zerlegen wir das Problem in drei Teile und im zweiten Ansatz überprüfen wir die Groß- und Kleinschreibung benachbarter Elemente. Die zeitliche und räumliche Komplexität beider Codes ist jedoch ähnlich, der Code der zweiten Methode ist jedoch besser lesbar.
Das obige ist der detaillierte Inhalt vonÜberprüfen Sie, ob Großbuchstaben in einer Zeichenfolge korrekt verwendet werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!