Escreva uma função que retorne a primeira posição de uma sub-string dentro de uma string. Caso a sub-string não seja encontrada, a função deve retornar -1.

Passo 1

O exercício pede uma função que encontre a primeira ocorrência de uma sub-string dentro de outra string, retornando o índice inicial ou -1 se não achar nada. O conteúdo aqui é manipulação de strings e busca linear.

Passo 2

Para resolver, vamos usar a abordagem de força bruta (linear): percorremos cada possível posição de início na string principal e comparamos uma fatia dessa string com a sub-string.
Primeiro, calculamos o tamanho da string principal (n) e da sub-string (m). Se m for zero (sub-string vazia), retornamos 0 por convenção, já que uma string vazia está sempre presente no começo.
Em seguida, iteramos um índice i de 0 até n–m (inclusive). Em cada iteração, extraímos a fatia de tamanho m da string principal: s[i:i+m].
Comparamos essa fatia com a sub-string. Se forem iguais, significa que encontramos a primeira ocorrência e retornamos o índice i imediatamente.
Se o loop terminar sem encontrar nenhuma ocorrência, retornamos -1, indicando que a sub-string não existe dentro da string principal.

Resposta

def find_substring(s, sub):
n, m = len(s), len(sub)
# Se a sub-string for vazia, por convenção, retornamos 0
if m == 0:
return 0
# Varremos todos os possíveis inícios de sub-string em s
for i in range(n - m + 1):
# Comparamos a fatia de tamanho m com a sub-string
if s[i:i+m] == sub:
return i
# Se não encontrar, retornamos -1
return -1

Exercícios relacionados