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

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.