PHP樸素演算法模式搜尋程式
什麼是 PHP?
PHP(超文字預處理器)是一種廣泛使用的伺服器端指令碼語言,用於 Web 開發。它允許開發人員將程式碼嵌入 HTML 檔案中,從而建立動態網頁並與資料庫進行互動。PHP 以其簡單性、多功能性和與流行資料庫的廣泛整合能力而聞名。它提供了廣泛的擴充套件,並擁有龐大的開發者社群,確保了充足的資源和支援。
什麼是 PHP 中的樸素演算法?
樸素演算法,也稱為蠻力演算法,是一種簡單的模式搜尋演算法,用於在文字中查詢模式的出現。之所以稱之為“樸素”,是因為它沒有使用任何複雜的資料結構或高階技術。
在 PHP 的上下文中,樸素演算法實現為一個函式,該函式接受兩個引數:要在其中搜索的文字和要搜尋的模式。該演算法遍歷文字,將每個字元與模式中對應的字元進行比較。如果發現不匹配,它會移動到文字中的下一個字元並重新開始比較。如果找到匹配項,它將繼續比較後續字元,直到模式完全匹配或發生不匹配。
PHP 樸素演算法模式搜尋程式
示例
<?php function searchPattern($text, $pattern) { $textLength = strlen($text); $patternLength = strlen($pattern); $foundIndexes = array(); // Array to store the found indexes // Iterate through the text for ($i = 0; $i <= $textLength - $patternLength; $i++) { $j = 0; // Check for a match at the current position while ($j < $patternLength && $text[$i + $j] == $pattern[$j]) { $j++; } // If a match is found, add the starting index to the array if ($j == $patternLength) { $foundIndexes[] = $i; } } return $foundIndexes; } // Example usage $text = "ABCABCABCABC"; $pattern = "CA"; $indexes = searchPattern($text, $pattern); if (!empty($indexes)) { echo "Pattern found at indexes: " . implode(", ", $indexes); } else { echo "Pattern not found"; } ?>
輸出
Pattern found at indexes: 2, 5, 8
程式碼解釋
程式碼使用 PHP 實現樸素演算法進行模式搜尋。searchPattern 函式接受兩個引數:$text(輸入文字)和 $pattern(要搜尋的模式)。在函式內部,使用 strlen 函式確定文字和模式的長度。建立了一個名為 $foundIndexes 的空陣列,用於儲存在文字中找到模式的索引。
然後,該函式使用 for 迴圈遍歷文字,將每個字元與模式中對應的字元進行比較。如果找到匹配項,它將繼續比較後續字元,直到模式完全匹配或發生不匹配。如果找到完全匹配,則將起始索引新增到 $foundIndexes 陣列中。
在示例用法中,該函式使用示例文字“ABCABCABCABC”和模式“CA”進行呼叫。作為輸出,列印了在文字中找到模式“CA”的索引。總的來說,程式碼演示了 PHP 中樸素演算法的基本實現,在給定文字中搜索模式並返回模式出現的索引。
結論
提供的 PHP 程式實現了樸素演算法進行模式搜尋。它透過逐個比較字元來搜尋文字中給定的模式。該演算法遍歷文字並在每個位置檢查匹配項。如果找到匹配項,則將起始索引新增到陣列中。該程式返回所有找到的索引或指示模式是否未找到。雖然樸素演算法的時間複雜度為 O(m * n),其中 m 是模式長度,n 是文字長度,但它作為一種基本且直接的方法,適用於 PHP 中小型模式搜尋任務。