Programa Python para converter caracteres de uma string para maiúsculas e minúsculas
Neste problema, alternaremos a caixa de cada caractere da string. A maneira mais fácil de alternar entre maiúsculas e minúsculas de cada caractere de string é usando o método integrado swapcase().
Além disso, podemos usar os valores ASCII dos caracteres para trocar suas maiúsculas e minúsculas. Python também contém os métodos isUpper() e isLower() para verificar o caso do personagem e os métodos lower() e upper() para alterar o caso.
Aqui, aprenderemos diferentes abordagens para resolver o problema.
Declaração do problema - Fornecemos uma string alfa. Precisamos alternar o caso de caracteres de string. Significa converter caracteres maiúsculos em minúsculos e caracteres minúsculos em maiúsculos.
Exemplos de amostra
Entrada
alpha = "TutorialsPoint"
Saída
'tUTORIALSpOINT'
Explicação - Aqui, alternamos a caixa de cada personagem.
Entrada
alpha = “AAAA”
Saída
'aaaa'
Entrada
alpha = '12qwER@'
Saída
'12QWer@'
Explicação - Alteramos a caixa de cada caractere alfabético e mantivemos os caracteres especiais como estão.
Abordagem 1
Nesta abordagem, adicionamos 32 ao valor ASCII do caractere se o caractere estiver em maiúscula. Caso contrário, subtraímos 32 do valor ASCII do caractere para convertê-lo em maiúsculas.
Algoritmo
Etapa 1 - Converta a string na lista de caracteres.
Etapa 2 - Percorra a lista de caracteres.
Etapa 3 - Se o caractere estiver entre 'A' e 'Z', adicione 32 ao valor ASCII do caractere e atualize o caractere na lista.
Etapa 4 - Se o caractere estiver entre 'a' e 'z', subtraia 32 do valor ASCII do caractere e atualize o caractere na lista.
Etapa 5 - Use o método join() para converter todos os caracteres da lista em string.
Etapa 6 - Retorne a string resultante.
Exemplo
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)
Saída
The string after flipping the case of each character is - tUTORIALSpOINT
Complexidade de tempo - O(N) para percorrer os caracteres da string.
Complexidade de espaço - O(N) para armazenar a string na lista de caracteres.
Abordagem 2
Nesta abordagem, usamos o método isUpper() para verificar se o caractere está em maiúscula. Além disso, usamos os métodos upper() e lower() para converter o caractere em maiúsculo e minúsculo, respectivamente.
Algoritmo
Etapa 1 - Inicialize o 'temp' com uma string vazia para armazenar a string resultante.
Etapa 2 - Itere a string.
Etapa 3 - Se um caractere estiver em maiúscula, use o método lower() para converter o caractere em minúscula e anexá-lo à string temporária.
Etapa 4 - Caso contrário, use o método upper() para converter o caractere em maiúsculo e anexá-lo à string temporária.
Etapa 5 - Retorne a string 'temp'.
Exemplo
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)
Saída
The string after flipping the case of each character is - tUTORIALSpOINT
Complexidade de tempo - O(N) para percorrer a string.
Complexidade de espaço - O(N) para armazenar a string resultante.
Abordagem 3
Nesta abordagem, usamos o método swapcase() para alternar entre maiúsculas e minúsculas do caractere. Armazenamos a string alfa em si mesma depois de alternar entre maiúsculas e minúsculas de cada caractere.
Exemplo
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)
Saída
The string after flipping the case of each character is - aBCsdE
Complexidade de tempo - O(N)
Complexidade espacial - O(1)
Abordagem 4
Nesta abordagem, usaremos a expressão regular e a função lambda para alternar entre maiúsculas e minúsculas de cada caractere da string.
Algoritmo
Etapa 1 - Inicialize o 'patt' para pesquisar os caracteres alfabéticos minúsculos e maiúsculos.
Etapa 2 - Em seguida, use o método re.sub() para substituir todos os caracteres alfabéticos pelo caso oposto.
Etapa 3 - Use 'patt' como primeiro parâmetro do método sub(), a função lambda para alternar o caractere como segundo parâmetro e a string original como terceiro parâmetro.
Etapa 4 - Retorne a string alfa.
Exemplo
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)
Saída
The string after flipping the case of each character is - tUTORIALSpOINT
Complexidade de tempo - O(N)
Complexidade espacial - O(1)
Abordagem 5
Nesta abordagem, realizaremos a operação XOR do valor ASCII do caractere com 32 para alternar entre maiúsculas e minúsculas.
Quando tomamos XOR de 32 com qualquer caractere alfabético, ele alterna o 6º bit da representação binária do valor ASCII.
Vamos entender isso através do exemplo abaixo.
65='A'=1000001
97='um'=1100001
32=0100000
Então, quando pegamos o XOR de 65 e 32, ele se torna 97 à medida que o sexto bit é invertido e, da mesma forma, o XOR de 97 e 32 se torna 32.
Isso funcionará para todos os valores ASCII dos caracteres alfabéticos.
Algoritmo
Etapa 1 - Comece a percorrer a string.
Passo 2 - Execute a função isAlphabeticChar() para verificar se o caractere atual está em ordem alfabética.
Etapa 3 - Na função isAlphabeticChar(), retorne verdadeiro se o valor ASCII estiver entre 65 e 90 ou 97 e 122. Caso contrário, retorne falso.
Etapa 4 - Se o caractere atual for um caractere alfabético, pegue seu XOR com 32 e anexe o caractere atualizado à string 'temp'.
Etapa 5 - Caso contrário, anexe o caractere original à string temporária.
Etapa 6 - Retorne a string temporária.
Exemplo
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)
Saída
The string after flipping the case of each character is - tUTORIALSpOINT
Complexidade de tempo - O(N)
Complexidade espacial - O(N)
Aprendemos 5 abordagens para alternar cada caractere da string. A primeira abordagem usa o valor ASCII e a segunda abordagem usa os métodos isUpper(), upper() e lower().
Além disso, a terceira abordagem usa o método swapcase(), a quarta abordagem usa a expressão regular e a última abordagem usa o operador XOR.