Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Muitas vezes, na hora de validar se uma string contém uma permutação de outra, a gente pensa em usar estruturas como janelas deslizantes ou mapas de frequência.
---
Porém, uma abordagem simples, que funciona bem em certos casos, é ordenar os arrays de caracteres de ambas as strings. Depois, é só comparar se uma é subconjunto da outra. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Claro que essa estratégia tem seu custo, pois ordenar tem complexidade de O(n log n). Mas, na prática, ela pode facilitar a implementação e evitar erros na manipulação de mapas ou janelas. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
---
Por exemplo, no problema de verificar se um string contém uma permutação de outra, ordenar os arrays de caracteres de s1 e s2 e checar se a permutação está contida é uma solução limpa. Assim, se s2 contiver uma permutação de s1, ela vai aparecer como um substring ordenado de s2. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Quem já usou essa abordagem? Quais os tradeoffs na prática?
No fim, às vezes, a simplicidade na implementação compensa o custo extra de ordenar, especialmente pra casos menores ou scripts rápidos. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Carregando comentários...