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運算子。

更新於:2023年8月29日

瀏覽量:353

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告