Rastreador de strings – índices, substrings e algoritmos com strings

ComputaçãoAlgoritmos e resolução de problemasIdades 15–16

Carregando…

Usar com minha turma ✨ Personalizar com IA Relatar um problema

Uma string é desenhada como uma fileira de células de caracteres com índices a partir de 0. O modo Operações com strings trata de concatenação, comprimento, caractere em um índice, substring ou fatia [a, b) sem o índice final, busca (indexOf), equals, compareTo, maiúsculas/minúsculas, substituir, dividir e códigos de caractere, com os resultados em pseudocódigo, Python e Java lado a lado, inclusive erros de índice. O modo Algoritmos com laços executa passo a passo contar um caractere, inverter, verificar um palíndromo e a busca ingênua com um teste de mesa, e o último modo conta as comparações da busca ingênua contra Boyer–Moore.

Aula: Strings: índices, fatiamento e substring, métodos de strings e percurso de strings

O que mostra

Uma string é uma sequência imutável de caracteres, cada um com um índice que começa em 0. A fatia s[a:b] do Python e s.substring(a, b) do Java incluem o índice a e excluem o b, então devolvem b − a caracteres; o Java lança uma exceção quando um índice está fora do intervalo, enquanto o fatiamento do Python corta os índices. Métodos como upper, replace e split devolvem strings novas. Os algoritmos com laços percorrem os caracteres um índice por vez, e um teste de mesa registra cada passo. Boyer–Moore compara o padrão a partir da direita e salta para frente após uma falha.

Como usar

Digite uma string s (e t, r ou c quando pedido). Em Operações com strings, escolha uma Operação, arraste a e b e compare os resultados em Pseudocódigo, Python e Java; marque Mostrar códigos dos caracteres para ver os valores ASCII/Unicode. Em Algoritmos com laços, escolha um Algoritmo e a linguagem em Código, clique em Passo ou Executar e acompanhe a linha destacada e o teste de mesa. Em Ingênua vs Boyer–Moore, avance as duas buscas e compare suas contagens.

Parâmetros que você pode mudar

  • Modo Operações com strings, Algoritmos com laços, Busca: ingênua vs Boyer–Moore
  • Operação s + t (concatenação), comprimento, caractere no índice a, substring / fatia [a, b), buscar t (find / indexOf), igualdade (equals), comparar (compareTo), para maiúsculas, para minúsculas, substituir t por r, dividir em c, código do caractere (ord / chr)
  • Algoritmo contar um caractere c, inverter a string, verificar palíndromo, busca ingênua de substring
  • Linguagem do código Pseudocódigo, Python, Java
  • String s
  • Segunda string t (padrão)
  • Substituição r
  • Caractere c
  • Índice a 0–28
  • Índice b 0–28
  • Mostrar códigos dos caracteres
  • Velocidade 0,5–10 passos/s

Perguntas para explorar

  1. Por que s.substring(2, 5) devolve 3 caracteres, e o que acontece no Java e no Python se b for maior que o comprimento?
  2. Por que "apple".compareTo("Apple") dá um número positivo?
  3. Por que Boyer–Moore precisa de menos comparações que a busca ingênua quando o padrão é longo?