trouver le nombre de sous-chaîne dans la chaîne
Je dois trouver le comptage d'une sous-chaîne dans une chaîne de caractères en utilisant le langage C.
Je suis l'aide de la fonction strstr
mais il ne trouve que la première occurrence.
Mon idée de l'algorithme est quelque chose comme la recherche dans la chaîne alors que strstr
ne retourne pas null et
pour la sous-chaîne de la chaîne principale sur chaque boucle.
Ma question est comment le faire?
source d'informationauteur Jordan Borisov
Vous devez vous connecter pour publier un commentaire.
Vous pourriez faire quelque chose comme
Qui est, quand vous obtenez un résultat, commencer à chercher de nouveau à la prochaine position de la chaîne.
strstr() ne fonctionne pas qu'à partir du début d'une chaîne, mais à partir de n'importe quelle position.
Devrait déjà traitées les pièces de la chaîne doit être consommé ou pas?
Par exemple, à quoi s'attendre de réponse pour le cas de la recherche
oo
dansfoooo
2 ou 3?Si ce dernier (nous permettre de sous-chaîne qui se chevauchentet la réponse est de trois), puis Joachim Isaksson suggéré le bon code.
Si nous recherche de sous-chaînes distinctes (la réponse doit être deux), puis voir le code ci-dessous (et en ligne exemple ici):
UTILISATION KMP et vous pouvez le faire en O(n)
Vous pouvez voir les pages du wiki pour plus de détails
Les résultats peuvent être différents selon si vous permettre un chevauchement ou non:
Sortie