将字符串的字符转换为相反大小写的 Python 程序

data structurepythonprogramming

在这个问题中,我们将切换每个字符串字符的大小写。切换每个字符串字符大小写的最简单方法是使用 swapcase() 内置方法。

此外,我们还可以使用字符的 ASCII 值来交换它们的大小写。Python 还包含 isUpper() 和 isLower() 方法来检查字符的大小写,以及 lower() 和 upper() 方法来更改大小写。

在这里,我们将学习解决问题的不同方法。

问题陈述 - 我们给出了一个字符串 alpha。我们需要切换字符串字符的大小写。意思是将大写字母转换为小写字母,将小写字母转换为大写字母。

示例

输入

alpha = "TutorialsPoint"

输出

'tUTORIALSpOINT'

说明 - 在这里,我们切换了每个字符的大小写。

输入

alpha = "AAAA"

输出

'aaaa'

输入

alpha = '12qwER@'

输出

'12QWer@'

说明 - 我们更改了每个字母字符的大小写,并保持特殊字符不变。

方法 1

在此方法中,如果字符为大写,我们会将 32 添加到字符的 ASCII 值中。否则,我们从字符的 ASCII 值中减去 32,将字符转换为大写。

算法

步骤 1 - 将字符串转换为字符列表。

步骤 2 - 遍历字符列表。

步骤 3 - 如果字符介于 'A' 到 'Z' 之间,则将字符的 ASCII 值加 32,并更新列表中的字符。

步骤 4 - 如果字符介于 'a' 到 'z' 之间,则从字符的 ASCII 值中减去 32,并更新列表中的字符。

步骤 5 - 使用 join() 方法将列表中的所有字符转换为字符串。

步骤 6 - 返回结果字符串。

示例

def changeCase(alpha):
    alpha_list = list(alpha) # 字符串到列表
# 遍历字符串字符列表
   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)  # 改为小写
     elif alpha_list[p] >= 'a' and alpha_list[p] <= 'z':
       alpha_list[p] = chr(ord(alpha_list[p]) - 32)  # 改为大写

   alpha = ''.join(alpha_list)  # List to string
   return alpha
alpha = "TutorialsPoint"
alpha = changeCase(alpha)
print("翻转每个字符的大小写后的字符串为 -", alpha)

输出

翻转每个字符的大小写后的字符串为 - tUTORIALSpOINT

时间复杂度 - O(N) 遍历字符串字符。

空间复杂度 - O(N) 将字符串存储在字符列表中。

方法 2

在此方法中,我们使用 isUpper() 方法来检查字符是否为大写。此外,我们分别使用 upper() 和 lower() 方法将字符转换为大写和小写。

算法

步骤 1 - 使用空字符串初始化"temp"以存储结果字符串。

步骤 2 - 迭代字符串。

步骤 3 - 如果字符为大写,则使用 lower() 方法将字符转换为小写并将其附加到临时字符串。

步骤 4 - 否则,使用 upper() 方法将字符转换为大写并将其附加到临时字符串。

步骤 5 - 返回"temp"字符串。

示例

def changeCase(alpha):
   temp = ""
   for ch in alpha:
     # 使用 isupper() 方法检查字符是否为大写
     if (ch.isupper()):
    	# 将字符转换为小写
       	temp += ch.lower()
     else:
       temp += ch.upper()  # 将字符转换为大写
   return temp
alpha = "TutorialsPoint"
alpha = changeCase(alpha)
print("翻转每个字符的大小写后的字符串为 -", alpha)

输出

翻转每个字符的大小写后的字符串为 - tUTORIALSpOINT

时间复杂度 - 遍历字符串的 O(N)。

空间复杂度 - 存储结果字符串的 O(N)。

方法 3

在此方法中,我们使用 swapcase() 方法来切换字符的大小写。我们在切换每个字符的大小写后将 alpha 字符串存储到其自身。

示例

def changeCase(alpha):
    # 使用 swapcase() 函数切换字符串字符的大小写
   alpha = alpha.swapcase()
   return alpha
alpha = "AbcSDe"
alpha = changeCase(alpha)
print("翻转每个字符的大小写后的字符串为 -", alpha)

输出

翻转每个字符的大小写后的字符串为 - aBCsdE

时间复杂度 - O(N)

空间复杂度 - O(1)

方法 4

在此方法中,我们将使用正则表达式和 lambda 函数来切换每个字符串字符的大小写。

算法

步骤 1 - 初始化"patt"以搜索小写和大写字母字符。

步骤 2 - 接下来,使用 re.sub() 方法将所有字母字符替换为其相反的大小写。

步骤 3 - 使用"patt"作为sub() 方法的第一个参数、用于切换字符的 lambda 函数作为第二个参数、原始字符串作为第三个参数。

步骤 4 - 返回 alpha 字符串。

示例

import re
def changeCase(alpha):
   # 正则表达式
   patt = r'[a-zA-Z]'
 
   # 切换每个字符的大小写
   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("翻转每个字符的大小写后的字符串为 -", alpha)

输出

翻转每个字符的大小写后的字符串为 - tUTORIALSpOINT

时间复杂度 - O(N)

空间复杂度 - O(1)

方法 5

在此方法中,我们将对字符的 ASCII 值与 32 执行 XOR 运算以切换大小写。

当我们将 32 与任何字母字符进行 XOR 时,它会切换 ASCII 值的二进制表示的第 6 位。

让我们通过下面的示例来理解它。

  • 65 = 'A' = 1000001

  • 97 = 'a' = 1100001

  • 32 = 0100000

因此,当我们对 65 和 32 进行异或时,由于第 6 位被翻转,结果变为 97,同样,对 97 和 32 进行异或也变为 32。

这适用于所有字母字符的 ASCII 值。

算法

步骤 1 - 开始遍历字符串。

步骤 2 - 执行 isAlphabeticChar() 函数检查当前字符是否为字母。

步骤 3 - 在 isAlphabeticChar() 函数中,如果 ASCII 值介于 65 和 90 之间,则返回 true,否则97 和 122。否则,返回 false。

步骤 4 - 如果当前字符是字母字符,则将其与 32 进行异或,并将更新后的字符附加到"临时"字符串。

步骤 5 - 否则,将原始字符附加到临时字符串。

步骤 6 - 返回临时字符串。

示例

def isAlphbeticChar(char):
	Ascii = ord(char[0])

	# 使用 ASCII 值来验证字符
	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("翻转每个字符的大小写后的字符串为 -", alpha)

输出

翻转每个字符的大小写后的字符串为 - tUTORIALSpOINT

时间复杂度 - O(N)

空间复杂度 - O(N)

我们学习了 5 种方法来切换字符串的每个字符。第一种方法使用 ASCII 值,第二种方法使用 isUpper()、upper() 和 lower() 方法。

此外,第三种方法使用 swapcase() 方法,第四种方法使用正则表达式,最后一种方法使用 XOR 运算符。


相关文章