Maison >développement back-end >tutoriel php >Faire d'une chaîne une sous-séquence à l'aide d'incréments cycliques
2825. Faire d'une chaîne une sous-séquence à l'aide d'incréments cycliques
Difficulté :Moyen
Sujets : Deux pointeurs, chaîne
Vous recevez deux chaînes indexées à 0 str1 et str2.
Dans une opération, vous sélectionnez un ensemble d'indices dans str1, et pour chaque index i dans l'ensemble, incrémentez str1[i] au caractère suivant cycliquement. Autrement dit, « a » devient « b », « b » devient « c », et ainsi de suite, et « z » devient « a ».
Renvoyer true s'il est possible de faire de str2 une sous-séquence de str1 en effectuant l'opération au plus une fois, et false sinon.
Remarque : Une sous-séquence d'une chaîne est une nouvelle chaîne formée à partir de la chaîne d'origine en supprimant certains (éventuellement aucun) des caractères sans perturber les positions relatives des caractères restants.
Exemple 1 :
Exemple 2 :
Exemple 3 :
Contraintes :
Indice :
Solution :
Nous devons vérifier si nous pouvons faire de str2 une sous-séquence de str1 en effectuant au plus une opération d'incrémentation cyclique sur n'importe quel caractère de str1 :
Implémentons cette solution en PHP : 2825. Faire d'une chaîne une sous-séquence à l'aide d'incréments cycliques
Explication:
- Deux pointeurs : i et j sont initialisés respectivement au début de str1 et str2.
- Matching Logic : à l'intérieur de la boucle, nous vérifions si les caractères de str1[i] et str2[j] sont les mêmes ou si nous pouvons incrémenter str1[i] pour faire correspondre str2[j] de manière cyclique.
- La condition d'incrémentation cyclique est gérée à l'aide de (ord($str1[$i]) 1 - ord('a')) % 26 qui vérifie si str1[i] peut être incrémenté pour correspondre à str2[j].
- Vérification de la sous-séquence : Si nous avons parcouru str2 complètement (c'est-à-dire j == m), cela signifie que str2 est une sous-séquence de str1. Sinon, ce n'est pas le cas.
Complexité temporelle :
Cette solution vérifie efficacement s'il est possible de faire de str2 une sous-séquence de str1 avec au plus une opération d'incrémentation cyclique.
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!