Manipulando Strings e Caracteres em Python: Exemplos Práticos

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).

Tags: Python manipulação de strings Algoritmos listas inversão de string

Publicado em 7-9 06:34