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运算符。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP