Este artigo explora a resolução de problemas comuns de manipulação de strings e caracteres em Python, focando em eficiência e no uso de estruturas de dados adequadas.
Inversão Simples de String Dada uma lista de caracteres representando uma string, o objetivo é invertê-la in-place, sem alocar memória adicional significativa. Ver Código
from typing import List
class ManipuladorString:
def inverter(self, s: List[str]) -> None:
"""
Inverte uma lista de caracteres in-place.
Args:
s: A lista de caracteres a ser invertida.
"""
ponta_esquerda = 0
ponta_direita = len(s) - 1
while ponta_esquerda < ponta_direita:
s[ponta_esquerda], s[ponta_direita] = s[ponta_direita], s[ponta_esquerda]
ponta_esquerda += 1
ponta_direita -= 1
Inversão de Segmentos em String O desafio aqui é inverter os primeiros k caracteres de cada bloco de 2k caracteres em uma string. Se houver menos de k caracteres restantes, todos são invertidos. Se houver entre k e 2k caracteres, apenas os primeiros k são invertidos. Ver Código
class ManipuladorString:
def inverter_segmentos(self, s: str, k: int) -> str:
"""
Inverte segmentos de uma string de acordo com as regras especificadas.
Args:
s: A string de entrada.
k: O tamanho do segmento a ser invertido e o tamanho do bloco.
Returns:
A string com os segmentos invertidos.
"""
lista_chars = list(s)
n = len(lista_chars)
for i in range(0, n, 2 * k):
inicio_inversao = i
fim_inversao = min(i + k - 1, n - 1)
while inicio_inversao < fim_inversao:
lista_chars[inicio_inversao], lista_chars[fim_inversao] = lista_chars[fim_inversao], lista_chars[inicio_inversao]
inicio_inversao += 1
fim_inversao -= 1
return "".join(lista_chars)
Substituição de Dígitos por Palavra Esta tarefa envolve a substituição de todos os caracteres numéricos em uma string pela palavra "number", mantendo os craacteres alfabéticos inalterados. Ver Código
def substituir_digitos(s: str) -> str:
"""
Substitui todos os dígitos em uma string pela palavra "number".
Args:
s: A string de entrada contendo letras e dígitos.
Returns:
A string com os dígitos substituídos.
"""
lista_resultado = list(s)
for i in range(len(lista_resultado)):
if lista_resultado[i].isdigit():
lista_resultado[i] = "number"
return "".join(lista_resultado)
# Exemplo de uso:
# entrada = input("Digite uma string: ")
# saida = substituir_digitos(entrada)
# print(saida)
Para converter uma lista de caracteres em uma string, utilize "".join(lista_de_caracteres). Para converter uma string em uma lista de caracteres, use list(string).