Exemple d'algorithme de correspondance de chaînes implémenté en PHP

jacklove
Libérer: 2023-04-02 15:44:01
original
1780 Les gens l'ont consulté

Cet article présente principalement l'algorithme de correspondance de chaînes implémenté par PHP, décrit brièvement le concept et le principe de l'algorithme du dimanche et analyse les compétences associées de PHP basées sur l'algorithme du dimanche pour implémenter des opérations de correspondance de chaînes sous forme d'exemples. dans le besoin peuvent se référer à Suivant

L'exemple de cet article décrit l'algorithme de correspondance de chaînes implémenté par l'algorithme PHP——Sunday. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

L'algorithme du dimanche est une correspondance de modèles de chaînes proposée par Daniel M. Sunday en 1990. L'idée principale est la suivante : Pendant le processus de correspondance, lorsque la chaîne de modèle s'avère sans correspondance, l'algorithme peut sauter autant de caractères que possible pour l'étape suivante de correspondance, améliorant ainsi l'efficacité de la correspondance.

<?php
/*
 *@param $pattern 模式串
 *@param $text 待匹配串
 */
function mySunday($pattern = &#39;&#39;,$text = &#39;&#39;){
  if(!$pattern || !$text) return false;
  $pattern_len = mb_strlen($pattern);
  $text_len = mb_strlen($text);
  if($pattern_len >= $text_len) return false;
  $i = 0;
  for($i = 0; $i < $pattern_len; $i++){ //组装以pattern中的字符为下标的数组
    $shift[$pattern[$i]] = $pattern_len - $i;
  }
  while($i <= $text_len - $pattern_len){
    $nums = 0;   //匹配上的字符个数
    while($pattern[$nums] == $text[$i + $nums]){
      $nums++;
      if($nums == $pattern_len){
        return "The first match index is $i\n";
      }
    }
    if($i + $pattern_len < $text_len && isset($shift[$text[$i + $pattern_len]])){ //判断模式串后一位字符是否在模式串中
      $i += $shift[$text[$i + $pattern_len]];   //对齐该字符
    }else{
      $i += $pattern_len;   //直接滑动pattern_len位
    }
  }
}
$text = "I am testing mySunday on sunday!";
$pattern = "sunday";
echo mySunday($pattern,$text);
Copier après la connexion

Résultats en cours :

The first match index is 25
Copier après la connexion

Articles qui pourraient vous intéresser :

Un exemple de l'algorithme de correspondance maximale implémenté en PHP

Outil d'analyse des performances PHP xhprof Installation, utilisation et précautions associées

Explication de la méthode d'encapsulation php de la classe db pour se connecter à la base de données sqlite3

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal