Permutação em String
Guia detalhado e implementação de Python para o problema 'Permutation In String'.
1. Aprenda
O problema de 'Permutação em String' é um desafio importante na seção Janela Deslizante.
Esta implementação concentra-se na lógica de nível fácil em Python.
Priorizamos a precisão técnica e a legibilidade do código em nossas soluções fornecidas.
2. Real-World Applications
3. Visual Intuition
Visualizando o fluxo lógico para Permutation In String.
4. Prerequisites
5. Step-by-Step Thinking
1. Understand the problem
Leia a declaração do problema para Permutation In String com atenção.
2. Formulate brute force
Elabore uma solução iterativa simples.
3. Identify inefficiency
Procure cálculos redundantes.
4. Optimize search path
Use hashing ou classificação para acelerar o processo.
5. Final Implementation
Limpe o código para padrões de produção.
Declaração do problema
Dadas duas strings s1 e s2, retorne True se s2 contém uma permutação de s1, ou False caso contrário.
Em outras palavras, retorne True se uma das permutações de s1 for uma substring de s2.
Escreva uma função checkInclusion(s1: str, s2: str) -> bool.
- •1 <= len(s1), len(s2) <= 10^4
- •s1 and s2 consist of lowercase English letters
Exemplos
s1 = "ab", s2 = "eidbaooo"
True
s2 contains one permutation of s1: "ba" (starting at index 3).
s1 = "ab", s2 = "eidboaoo"
False
No permutation of "ab" exists as a contiguous substring in s2.
Need a Hint?
Edge Cases to Watch
- Estruturas de entrada vazias
- Entradas de elemento único
- Grandes limites numéricos
Pronto para resolver?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.
Insights e variações da entrevista
Análise de complexidade
Por que tempo: Directly evaluates all possibilities.
Por que espaço: Uses standard local memory.
Por que tempo: Optimized paths reduce total operations.
Por que espaço: May trade memory for speed.
Código Python da solução otimizada
Código Python da solução otimizada
def check_inclusion_opt(s1, s2):
if len(s1) > len(s2): return False
s1Count, s2Count = [0] * 26, [0] * 26
for i in range(len(s1)):
s1Count[ord(s1[i]) - ord('a')] += 1
s2Count[ord(s2[i]) - ord('a')] += 1
matches = 0
for i in range(26):
if s1Count[i] == s2Count[i]: matches += 1
l = 0
for r in range(len(s1), len(s2)):
if matches == 26: return True
index = ord(s2[r]) - ord('a')
s2Count[index] += 1
if s1Count[index] == s2Count[index]: matches += 1
elif s1Count[index] + 1 == s2Count[index]: matches -= 1
index = ord(s2[l]) - ord('a')
s2Count[index] -= 1
if s1Count[index] == s2Count[index]: matches += 1
elif s1Count[index] - 1 == s2Count[index]: matches -= 1
l += 1
return matches == 26Código de força bruta (protegido por spoiler)
Código de força bruta (protegido por spoiler)
def check_inclusion_brute(s1, s2):
n1, n2 = len(s1), len(s2)
if n1 > n2: return False
s1_sorted = sorted(s1)
for i in range(n2 - n1 + 1):
if sorted(s2[i : i + n1]) == s1_sorted:
return True
return FalseAlgorithm Pattern Checklist
When dealing with Sliding Window data patterns.
- Are constraints clear?
- Is there a linear or logarithmic optimization possible?
Key Revision Notes
Aplicam-se as propriedades padrão do problema da janela deslizante.
Perguntas relacionadas
PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!
Recursos Python recomendados
Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.
Tentativa/Exceção em Python e tratamento de erros
Evite que seus scripts Python travem. Aprenda os blocos try, exceto, finalmente e como gerar exceções personalizadas corretamente.
Como reverter uma string em Python
Aprenda como reverter uma string em Python usando fatiamento, a função reversed() e concatenação de loop com exemplos de código visual.
Folha de dicas dos métodos de string Python
Um guia de referência completo para manipulação de strings em Python. Domine a formatação, pesquisa, divisão, substituição e verificação de propriedades de string.
Python vs JavaScript: qual linguagem de programação é a melhor?
Uma comparação abrangente entre Python e JavaScript. Explore diferenças de sintaxe, desempenho, casos de uso (backend versus frontend) e exemplos de codificação.