2981. Trouver la sous-chaîne spéciale la plus longue qui apparaît trois fois I
Difficulté :Moyen
Sujets : Table de hachage, chaîne, recherche binaire, fenêtre coulissante, comptage
Vous recevez une chaîne s composée de lettres anglaises minuscules.
Une chaîne est dite spéciale si elle est composée d'un seul caractère. Par exemple, la chaîne "abc" n'est pas spéciale, alors que les chaînes "ddd", "zz" et "f" sont spéciales.
Renvoie la longueur de la sous-chaîne spéciale la plus longue de s qui apparaît au moins trois fois, ou -1 si aucune sous-chaîne spéciale n'apparaît au moins trois fois.
Une sous-chaîne est une séquence contiguë non vide de caractères au sein d'une chaîne.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Nous pouvons utiliser une approche par force brute en raison des petites contraintes de s (longueur jusqu'à 50). Nous allons :
Implémentons cette solution en PHP : 2981. Trouver la sous-chaîne spéciale la plus longue qui apparaît trois fois I
Explication:
- Boucle extérieure : Nous parcourons les longueurs possibles des sous-chaînes, en commençant par la plus longue. Cela garantit que nous renvoyons la sous-chaîne spéciale la plus longue dès que nous la trouvons.
- Fenêtre coulissante : Pour chaque longueur de sous-chaîne, nous utilisons une approche de fenêtre coulissante pour extraire toutes les sous-chaînes de cette longueur.
- Comptage des sous-chaînes : Nous utilisons un tableau associatif ($countMap) pour stocker et compter les occurrences de chaque sous-chaîne.
- Checking Special : Une fonction d'assistance isSpecial vérifie si la sous-chaîne est composée d'un seul caractère répété.
- Renvoi du résultat : Si une sous-chaîne valide est trouvée, nous renvoyons sa longueur ; sinon, on renvoie -1.
Complexité
Cette approche par force brute est réalisable compte tenu des contraintes (n <= 50).
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
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!