Maison >développement back-end >C++ >Comment puis-je compter efficacement les occurrences de caractères ou de chaînes dans une chaîne?

Comment puis-je compter efficacement les occurrences de caractères ou de chaînes dans une chaîne?

DDD
DDDoriginal
2025-01-31 06:36:101047parcourir

How Can I Efficiently Count Character or String Occurrences in a String?

compter efficacement les caractères ou les sous-chaînes dans les chaînes

Plusieurs méthodes existent pour compter les occurrences de caractères ou de sous-chaînes spécifiques au sein d'une chaîne plus grande, chacune avec ses propres avantages et inconvénients.

Une technique commune utilise le remplacement des chaînes. Par exemple:

<code class="language-csharp">string source = "/once/upon/a/time/";
int count = source.Length - source.Replace("/", "").Length;</code>

Cela calcule le nombre de caractères "/" en soustrayant la longueur de la chaîne après en supprimant tous les caractères "/" de la longueur d'origine.

Une autre approche implique le fractionnement des cordes:

<code class="language-csharp">string haystack = "/once/upon/a/time";
string needle = "/";
int needleCount = (haystack.Length - haystack.Replace(needle, "").Length) / needle.Length;</code>

Cette méthode divise la chaîne en fonction de la sous-chaîne cible et détermine le nombre.

Pour les développeurs utilisant .NET 3.5 ou version ultérieure, Linq fournit une solution plus élégante:

<code class="language-csharp">int count = source.Count(x => x == '/');</code>

Les capacités de comptage intégrées de Linq rationalisent considérablement le processus.

Fait intéressant, les tests de référence montrent souvent que la méthode de remplacement de la chaîne (le premier exemple) est généralement la plus rapide. Bien que les différences de performance entre ces méthodes soient souvent négligeables pour la plupart des applications, la méthode de remplacement de la chaîne s'avère systématiquement d'être la plus efficace.

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!

Déclaration:
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