Maison >développement back-end >tutoriel php >Caractères supplémentaires dans une chaîne
2707. Caractères supplémentaires dans une chaîne
Difficulté :Moyen
Sujets : Tableau, table de hachage, chaîne, programmation dynamique, Trie
Vous recevez une chaîne indexée à 0 et un dictionnaire de mots. Vous devez diviser s en une ou plusieurs sous-chaînes ne se chevauchant de telle sorte que chaque sous-chaîne soit présente dans le dictionnaire. Il peut y avoir des caractères supplémentaires dans les s qui ne sont présents dans aucune des sous-chaînes.
Renvoyer le nombre minimum de caractères supplémentaires restants si vous divisez les s de manière optimale.
Exemple 1 :
Exemple 2 :
Contraintes :
Indice :
Solution :
Nous pouvons définir un tableau dp où dp[i] représente le nombre minimum de caractères supplémentaires dans la sous-chaîne s[0:i] après une segmentation optimale.
Définition de la programmation dynamique :
Transition :
Résultat :
Implémentons cette solution en PHP : 2707. Caractères supplémentaires dans une chaîne
Explication:
Cas de base :
- dp[0] = 0 puisqu'aucun caractère supplémentaire n'existe dans une chaîne vide.
Recherche dans le dictionnaire :
- Nous stockons les mots du dictionnaire dans une carte de hachage en utilisant array_flip() pour une recherche à temps constant.
Transition :
- Pour chaque position i, nous vérifions toutes les sous-chaînes possibles s[j:i]. Si une sous-chaîne existe dans le dictionnaire, nous mettons à jour la valeur dp[i].
Complexité temporelle :
- La complexité temporelle est O(n^2) où n est la longueur de la chaîne s car pour chaque index, nous vérifions tous les indices précédents pour former des sous-chaînes.
Résultats des tests :
Pour l'entrée "leetscode" avec le dictionnaire ["leet","code","leetcode"], la fonction renvoie correctement 1, car il ne reste qu'un seul caractère supplémentaire ("s").
Pour l'entrée "sayhelloworld" avec le dictionnaire ["hello","world"], la fonction renvoie 3, car les trois premiers caractères ("say") sont supplémentaires.
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!