我們給了一個字串‘str’,包含大寫或小寫的字母字元。我們需要檢查字串中大寫字元的使用是否正確。
以下是在字串中正確使用大寫字母的方法。
如果只有第一個字元是大寫的,其他字元都是小寫的。
如果字串的所有字元都是小寫。
如果字串的所有字元都是大寫。
"Hello"
"valid"
「Hello」中,只有第一個字元為大寫,其他字元皆為小寫,因此是一個有效的字串。
'hello'
'valid'
在「hello」字串中,所有字元都是小寫的,因此它是一個有效的字串。
‘heLLO’
‘Not Valid’
在字串‘heLLO’中,第一個字元是小寫的,但是最後3個字元是大寫的,所以這個字串是無效的。
在這種方法中,如果第一個字元是小寫字母,我們檢查字串的所有字元是否都是小寫字母,並傳回一個布林值。如果第一個字元是大寫字母,我們檢查所有其他字元是大寫字母或小寫字母,並傳回布林值。
步驟 1 - 定義 isLower() 函數,該函數將單一字元作為參數,並傳回布林值該字元是否為小寫。如果‘character-A’大於或等於32,則表示字元為小寫。
步驟 2 - 定義 isUpper() 函數,就像 isLower() 函數一樣,並根據字元是否為大寫字母傳回一個布林值。
第 3 步 - 定義 isValidUpper() 函數,該函數檢查字串是否包含所有有效的大寫字元。
步驟 4 - 在 isValidUpper() 函數中,使用 isLower() 函數,並檢查第一個字元是否為小寫。如果是,請使用循環和 isUpper() 函數檢查所有其他字元。如果有任何字元為大寫,則傳回 false。否則,如果所有字元均為小寫,則傳回 true。
第5步 - 如果第一個字元是大寫字母,則需要檢查兩種情況。第一種情況是所有字元都可以是大寫字母,或者除了第一個字元外,所有字元都可以是小寫字母。
第5.1步 - 定義變數‘totalUpper’並將其初始化為1。
步驟 5.2 − 計算字串中大寫字元的總數。
步驟 5.3 - 如果大寫字元總數等於 1 或字串長度,則表示字串包含有效的大寫字符,傳回 true。否則,返回 false。
#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
時間複雜度 − O(N),因為它需要使用迴圈遍歷字串。 isLower()和isUpper()函數的時間複雜度為O(1)。
空間複雜度 − O(1),因為它沒有使用任何額外的空間。
在下面的方法中,我們優化了第一種方法的程式碼。在這裡,我們檢查字串中除前兩個字元之外的兩個相鄰元素是否大小寫相同,以檢查字串是否包含有效的大寫字元。
步驟 1 − 使用 for 迴圈從字串的第一個索引迭代到最後一個索引。
第二步 - 在for迴圈中,如果目前字元是大寫字母且前一個字元是小寫字母,則傳回false,因為它不是一個有效的字串。
步驟 3 − 如果目前字元是小寫字母且前一個字元是大寫字母,請依照下列步驟進行。
第3.1步 - 檢查前一個字符是否在字串中的第0個索引或第一個字符,並在for循環中繼續。
步驟 3.2 − 如果前一個字元不是第一個字符,則傳回 false。
#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
時間複雜度 - O(N),因為它需要使用迴圈遍歷字串。
空間複雜度 − O(1),因為它沒有使用任何額外的空間。
在本教程中,使用者學會了檢查字串中是否包含有效的大寫字元。我們學習了兩種不同的方法。在第一種方法中,我們將問題分解為三個部分,在第二種方法中,我們檢查相鄰元素的字元大小寫。然而,這兩種程式碼的時間和空間複雜度相似,但第二種方法的程式碼更易讀。
以上是檢查字串中的大寫字元是否被正確使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!