Maison > interface Web > js tutoriel > Sous-chaîne la plus longue sans caractères répétitifs avec la technique de la fenêtre coulissante

Sous-chaîne la plus longue sans caractères répétitifs avec la technique de la fenêtre coulissante

Patricia Arquette
Libérer: 2024-12-10 11:14:16
original
929 Les gens l'ont consulté

Décomposons les étapes de la solution et voyons comment chaque étape fonctionne

Nous supposons que nous avons reçu la contribution suivante :
Longest Substring Without Repeating Characters with Sliding Window Technique

Nous allons créer un ensemble vide pour stocker les lettres que nous avons rencontrées et une variable pour conserver la sous-chaîne la plus longue que nous avons trouvée.
Longest Substring Without Repeating Characters with Sliding Window Technique

Maintenant, nous allons vérifier si la valeur pointée à droite existe dans l'ensemble. S'il n'existe pas, nous l'ajouterons à l'ensemble et avancerons d'un pas. Après cela, nous mettrons à jour la sous-chaîne la plus longue en comparant la taille de l'ensemble à la valeur stockée dans la variable longSubstr.
Longest Substring Without Repeating Characters with Sliding Window Technique

Nous vérifierons si la valeur pointée à droite est dans l'ensemble. Nous voyons que ce n'est pas le cas, nous l'ajoutons donc à l'ensemble et incrémentons de 1 à droite. Après cela, nous prenons le maximum entre la taille de l'ensemble et la valeur dans longSubstr.
Longest Substring Without Repeating Characters with Sliding Window Technique

Nous vérifions si la valeur pointée par droite est dans l'ensemble, ce qui signifie que c n'est pas dans l'ensemble. Nous l'ajoutons donc à l'ensemble, incrémentons de 1 et vérifions la sous-chaîne maximale.
Longest Substring Without Repeating Characters with Sliding Window Technique

Maintenant, on vérifie si la valeur pointée par droite, qui est a, existe dans l'ensemble. Nous voyons que c'est le cas, alors nous le retirons de l'ensemble et avançons d'un pas vers la gauche.
Longest Substring Without Repeating Characters with Sliding Window Technique

La valeur pointée à droite est b, et elle existe dans l'ensemble.

Par conséquent, nous déplaçons le pointeur gauche d'un pas vers l'avant et supprimons b de l'ensemble.
Longest Substring Without Repeating Characters with Sliding Window Technique

Maintenant, nous voyons que b est dans l'ensemble, nous supprimons donc la valeur pointée par la gauche et avançons d'un pas vers la gauche.
Longest Substring Without Repeating Characters with Sliding Window Technique

La valeur pointée à droite est c, et elle existe dans l'ensemble.
Par conséquent, nous le retirons de l'ensemble et avançons d'un pas vers la gauche.
Longest Substring Without Repeating Characters with Sliding Window Technique

Nous continuerons avec la même technique jusqu'à étape 17 et obtiendrons :
Longest Substring Without Repeating Characters with Sliding Window Technique

Voici une implémentation JavaScript

function longestSubstring(s) {
  let left = 0
  let right = 0

  let maxSubstr = 0
  let set = new Set()

  while (right < s.length) {
    const currentChar = s[right]

    if (!set.has(currentChar)) {
      set.add(currentChar)
      right++
      maxSubstr = Math.max(maxSubstr, right - left) // Update max substring length
    } else {
      set.delete(s[left])
      left++
    }
  }

  return maxSubstr
}

let inputString = 'abcabcbb'
console.log(longestSubstring(inputString)) // Output: 3 ("abc")

Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal