Pesquisa de site

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.

Artigos relacionados: