Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung und Fälle des Sonntagsalgorithmus des PHP-Matching-Algorithmus

Detaillierte Erklärung und Fälle des Sonntagsalgorithmus des PHP-Matching-Algorithmus

墨辰丷
墨辰丷Original
2018-05-16 17:32:391089Durchsuche

In diesem Artikel werden hauptsächlich die detaillierten Erklärungen und Fälle des Sunday-Algorithmus des PHP-Matching-Algorithmus vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Der Sunday-Algorithmus ist ein String-Pattern-Matching, das 1990 von Daniel M. Sunday vorgeschlagen wurde. Die Kernidee besteht darin, dass der Algorithmus während des Matching-Prozesses, wenn festgestellt wird, dass die Musterzeichenfolge nicht übereinstimmt, so viele Zeichen wie möglich für den nächsten Matching-Schritt überspringen kann, wodurch die Matching-Effizienz verbessert wird.

Der Fall ist wie folgt:

<?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);

Laufendes Ergebnis:

The first match index is 25

Verwandte Empfehlungen:

Erklärung der PHP-Stack-Datenstruktur und des Klammerabgleichs Algorithmus-Beispiele

Detaillierte Erläuterung des PHP-String-Matching-Algorithmus

Beispiel für die Implementierung des String-Matching-Algorithmus durch PHP Sonntagsalgorithmus

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung und Fälle des Sonntagsalgorithmus des PHP-Matching-Algorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn