Pourquoi l'algorithme donné ne s'arrête-t-il pas ?
Dans l'algorithme fourni, une tentative est faite pour trouver le nombre d'occurrences d'une sous-chaîne dans une chaîne. Cependant, l'algorithme est conçu pour continuer jusqu'à ce que le dernier index de la sous-chaîne de la chaîne devienne -1. Cette condition ne sera jamais remplie car le dernier index est toujours mis à jour en y ajoutant la longueur de la sous-chaîne. En conséquence, l'algorithme continuera à rechercher la sous-chaîne indéfiniment, sans jamais se terminer.
Utiliser Apache Commons Lang pour le comptage des sous-chaînes
Une approche alternative pour compter les occurrences de sous-chaîne est pour utiliser la méthode StringUtils.countMatches d'Apache Commons Lang. Cette méthode prend une chaîne et une sous-chaîne comme arguments et renvoie le nombre de fois où la sous-chaîne apparaît dans la chaîne. En utilisant cette méthode, le problème d'origine peut être résolu avec le code suivant :
String str = "helloslkhellodjladfjhello"; String findStr = "hello"; System.out.println(StringUtils.countMatches(str, findStr));
Ce code renvoie :
3
qui compte correctement les occurrences de la sous-chaîne "hello" dans le chaîne "helloslkhellodjladfjhello".
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!