Python程式:將字串的字元轉換為相反的大小寫
在這個問題中,我們將切換每個字串字元的大小寫。切換每個字串字元大小寫的最簡單方法是使用內建的`swapcase()`方法。
此外,我們可以使用字元的ASCII值來切換它們的大小寫。Python還包含`isUpper()`和`isLower()`方法來檢查字元的大小寫,以及`lower()`和`upper()`方法來更改大小寫。
在這裡,我們將學習解決該問題的不同方法。
問題陳述 - 我們給定一個字串alpha。我們需要切換字串字元的大小寫。這意味著將大寫字元轉換為小寫,將小寫字元轉換為大寫。
示例
輸入
alpha = "TutorialsPoint"
輸出
'tUTORIALSpOINT'
解釋 - 在這裡,我們切換了每個字元的大小寫。
輸入
alpha = “AAAA”
輸出
'aaaa'
輸入
alpha = '12qwER@'
輸出
'12QWer@'
解釋 - 我們更改了每個字母字元的大小寫,並保留了特殊字元。
方法1
在這種方法中,如果字元是大寫,我們將字元的ASCII值加32。否則,我們將從字元的ASCII值中減去32以將其轉換為大寫。
演算法
步驟1 - 將字串轉換為字元列表。
步驟2 - 遍歷字元列表。
步驟3 - 如果字元介於'A'到'Z'之間,則將字元的ASCII值加32,並更新列表中的字元。
步驟4 - 如果字元介於'a'到'z'之間,則從字元的ASCII值中減去32,並更新列表中的字元。
步驟5 - 使用`join()`方法將列表的所有字元轉換為字串。
步驟6 - 返回結果字串。
示例
def changeCase(alpha): alpha_list = list(alpha) # String to list # Traverse list of string characters for p in range(len(alpha_list)): if alpha_list[p] >= 'A' and alpha_list[p] <= 'Z': alpha_list[p] = chr(ord(alpha_list[p]) + 32) # Change to lowercase elif alpha_list[p] >= 'a' and alpha_list[p] <= 'z': alpha_list[p] = chr(ord(alpha_list[p]) - 32) # Change to uppercase alpha = ''.join(alpha_list) # List to string return alpha alpha = "TutorialsPoint" alpha = changeCase(alpha) print("The string after flipping the case of each character is -", alpha)
輸出
The string after flipping the case of each character is - tUTORIALSpOINT
時間複雜度 - O(N) 用於遍歷字串字元。
空間複雜度 - O(N) 用於將字串儲存在字元列表中。
方法2
在這種方法中,我們使用`isUpper()`方法來檢查字元是否為大寫。此外,我們使用`upper()`和`lower()`方法分別將字元轉換為大寫和小寫。
演算法
步驟1 - 使用空字串初始化'temp'以儲存結果字串。
步驟2 - 迭代字串。
步驟3 - 如果字元是大寫,則使用`lower()`方法將其轉換為小寫並將其附加到temp字串。
步驟4 - 否則,使用`upper()`方法將其轉換為大寫並將其附加到temp字串。
步驟5 - 返回'temp'字串。
示例
def changeCase(alpha): temp = "" for ch in alpha: # Using the isupper() method to check if the character is uppercase or not if (ch.isupper()): # Converting a character to lowercase temp += ch.lower() else: temp += ch.upper() # Converting a character to uppercase return temp alpha = "TutorialsPoint" alpha = changeCase(alpha) print("The string after flipping the case of each character is -", alpha)
輸出
The string after flipping the case of each character is - tUTORIALSpOINT
時間複雜度 - O(N) 用於遍歷字串。
空間複雜度 - O(N) 用於儲存結果字串。
方法3
在這種方法中,我們使用`swapcase()`方法來切換字元的大小寫。我們在切換每個字元的大小寫後將alpha字串儲存到自身。
示例
def changeCase(alpha): # Using the swapcase() function to toggle the case of characters of the string alpha = alpha.swapcase() return alpha alpha = "AbcSDe" alpha = changeCase(alpha) print("The string after flipping the case of each character is -", alpha)
輸出
The string after flipping the case of each character is - aBCsdE
時間複雜度 - O(N)
空間複雜度 - O(1)
方法4
在這種方法中,我們將使用正則表示式和lambda函式來切換每個字串字元的大小寫。
演算法
步驟1 - 初始化'patt'以搜尋小寫和大寫字母字元。
步驟2 - 接下來,使用`re.sub()`方法將所有字母字元替換為其相反的大小寫。
步驟3 - 使用'patt'作為`sub()`方法的第一個引數,使用lambda函式來切換字元作為第二個引數,並將原始字串作為第三個引數。
步驟4 - 返回alpha字串。
示例
import re def changeCase(alpha): # Regular expression patt = r'[a-zA-Z]' # Toggle case of each character alpha = re.sub(patt, lambda ch: ch.group().lower() if ch.group().isupper() else ch.group().upper(), alpha) return alpha alpha = "TutorialsPoint" alpha = changeCase(alpha) print("The string after flipping the case of each character is -", alpha)
輸出
The string after flipping the case of each character is - tUTORIALSpOINT
時間複雜度 - O(N)
空間複雜度 - O(1)
方法5
在這種方法中,我們將對字元的ASCII值執行XOR運算,並使用32來切換大小寫。
當我們將32與任何字母字元進行XOR運算時,它會切換ASCII值二進位制表示的第6位。
讓我們透過下面的例子來理解它。
65 = 'A' = 1000001
97 = 'a' = 1100001
32 = 0100000
因此,當我們對65和32進行XOR運算時,它將變為97,因為第6位被翻轉,類似地,97和32的XOR將變為32。
這將適用於所有字母字元的ASCII值。
演算法
步驟1 - 開始遍歷字串。
步驟2 - 執行`isAlphabeticChar()`函式以檢查當前字元是否為字母。
步驟3 - 在`isAlphabeticChar()`函式中,如果ASCII值介於65和90或97和122之間,則返回true。否則,返回false。
步驟4 - 如果當前字元是字母字元,則將其與32進行XOR運算,並將更新後的字元附加到'temp'字串。
步驟5 - 否則,將原始字元附加到temp字串。
步驟6 - 返回temp字串。
示例
def isAlphbeticChar(char): Ascii = ord(char[0]) # Using ASCII values to validate character if((Ascii >= 65 and Ascii <= 90) or (Ascii >= 97 and Ascii <= 122)): return True else: return False def changeCase(alpha): temp = "" for ch in range(len(alpha)): if(isAlphbeticChar(alpha[ch])): temp += chr(ord(alpha[ch]) ^ (1 << 5)) else: temp += alpha[ch] return temp alpha = "TutorialsPoint" alpha = changeCase(alpha) print("The string after flipping the case of each character is -", alpha)
輸出
The string after flipping the case of each character is - tUTORIALSpOINT
時間複雜度 - O(N)
空間複雜度 - O(N)
我們學習了5種切換字串每個字元大小寫的方法。第一種方法使用ASCII值,第二種方法使用`isUpper()`、`upper()`和`lower()`方法。
此外,第三種方法使用`swapcase()`方法,第四種方法使用正則表示式,最後一種方法使用XOR運算子。