亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP實現(xiàn)求解最長公共子串問題的方法

 更新時間:2017年11月17日 10:06:49   作者:朱__朱  
這篇文章主要介紹了PHP實現(xiàn)求解最長公共子串問題的方法,簡單描述了求解最長公共子串問題算法原理,并結(jié)合實例形式分析了PHP實現(xiàn)求解最長公共子串的具體操作技巧,需要的朋友可以參考下

本文實例講述了PHP實現(xiàn)求解最長公共子串問題的方法。分享給大家供大家參考,具體如下:

題目:如果字符串一的所有字符按其在字符串中的順序出現(xiàn)在另外一個字符串二中,則字符串一稱之為字符串二的子串。

注意,并不要求子串(字符串一)的字符必須連續(xù)出現(xiàn)在字符串二中。即,可以不連續(xù),但順序不能變。

請編寫一個函數(shù),輸入兩個字符串,求它們的最長公共子串,并打印出一個最長公共子串。

例如:輸入兩個字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它們的最長公共子串,

下面的算法是根據(jù)網(wǎng)上的java算法由酒逍遙 翻譯過來的

已經(jīng)經(jīng)過修正

LCS經(jīng)典算法php版本

<?php
class LCS{
  public static function main(){
    //設(shè)置字符串長度
    $substringLength1 = 20;
    $substringLength2 = 20; //具體大小可自行設(shè)置
    $opt=array_fill(0,21,array_fill(0,21,null));
    // 隨機生成字符串
    $x = self::GetRandomStrings($substringLength1);
    $y = self::GetRandomStrings($substringLength2);
    $startTime = microtime(true);
    // 動態(tài)規(guī)劃計算所有子問題
    for ($i = $substringLength1 - 1; $i >= 0; $i--){
      for ($j = $substringLength2 - 1; $j >= 0; $j--){
        if ($x[$i] == $y[$j])
          $opt[$i][$j] = $opt[$i + 1][$j + 1] + 1;
        else
          $opt[$i][$j] = max($opt[$i + 1][$j], $opt[$i][$j + 1]);
      }
    }
    echo "substring1:".$x."\r\n";
    echo "substring2:".$y."\r\n";
    echo "LCS:";
    $i = 0;
    $j = 0;
    while ($i < $substringLength1 && $j < $substringLength2){
      if ($x[$i] == $y[$j]){
        echo $x[$i];
        $i++;
        $j++;
      } else if ($opt[$i + 1][$j] >= $opt[$i][$j + 1])
        $i++;
      else
        $j++;
    }
    $endTime = microtime(true);
    echo "\r\n";
    echo "Totle time is " . ($endTime - $startTime) . " s";
  }
  public static function GetRandomStrings($length){
    $buffer = "abcdefghijklmnopqrstuvwxyz";
    $str="";
    for($i=0;$i<$length;$i++){
      $random=rand(0,strlen($buffer)-1);
      $str.=$buffer[$random];
    }
    return $str;
  }
}
LCS::main();
?>

運行結(jié)果:

substring1:cgqtdaacneftabsxvmlb
substring2:suwjwwakzzhghbsmnksg
LCS:absm
Totle time is 0.000648975372314 s

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結(jié)》及《PHP數(shù)學(xué)運算技巧總結(jié)

希望本文所述對大家PHP程序設(shè)計有所幫助。

相關(guān)文章

  • PHP中用header圖片地址 簡單隱藏圖片源地址

    PHP中用header圖片地址 簡單隱藏圖片源地址

    用header實現(xiàn)圖片地址的隱藏
    2008-04-04
  • PHP實現(xiàn)的回溯算法示例

    PHP實現(xiàn)的回溯算法示例

    這篇文章主要介紹了PHP實現(xiàn)的回溯算法,結(jié)合具體實例形式分析了php回溯算法的實現(xiàn)步驟與使用方法,涉及字符串與數(shù)組的遞歸、遍歷、運算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • 在VSCode中配置PHP開發(fā)環(huán)境的實戰(zhàn)步驟

    在VSCode中配置PHP開發(fā)環(huán)境的實戰(zhàn)步驟

    最近要寫一些可視化的網(wǎng)站,所以先把需要的環(huán)境配好吧,下面這篇文章主要給大家介紹了關(guān)于在VSCode中配置PHP開發(fā)環(huán)境的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • php 使用 __call實現(xiàn)重載功能示例

    php 使用 __call實現(xiàn)重載功能示例

    這篇文章主要介紹了php 使用 __call實現(xiàn)重載功能,結(jié)合實例形式分析了PHP使用__call實現(xiàn)重載的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • PHP 進度條函數(shù)的簡單實例

    PHP 進度條函數(shù)的簡單實例

    這篇文章主要介紹了PHP 進度條函數(shù)的簡單實例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • PHP中file_get_contents設(shè)置header請求頭,curl傳輸選項參數(shù)詳解說明

    PHP中file_get_contents設(shè)置header請求頭,curl傳輸選項參數(shù)詳解說明

    php中遠程獲取和采集內(nèi)容、實現(xiàn)PHP網(wǎng)頁版的FTP上傳下載、實現(xiàn)模擬登陸、實現(xiàn)接口數(shù)據(jù)傳輸(API)、實現(xiàn)模擬Cookie、下載文件斷點續(xù)傳等等,都會用到fopen、file_get_contents和curl這樣的函數(shù),當(dāng)然要對比一下了,程序架構(gòu)設(shè)計當(dāng)然要無可挑剔了。
    2023-07-07
  • 解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR兩個常量的作用

    解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR兩個常量的作用

    本篇文章是對PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR兩個常量的作用進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • php數(shù)組索引與鍵值操作技巧實例分析

    php數(shù)組索引與鍵值操作技巧實例分析

    這篇文章主要介紹了php數(shù)組索引與鍵值操作技巧,涉及php數(shù)組的遍歷與索引、鍵值操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 探究Laravel使用env函數(shù)讀取環(huán)境變量為null的問題

    探究Laravel使用env函數(shù)讀取環(huán)境變量為null的問題

    最近在工作中遇到一個問題,不知道大家有沒有遇到過,在 Laravel中(除 app/config 目錄下的配置文件中)使用env函數(shù)讀取環(huán)境變量,有時有用,有時返回 null,這究竟怎么回事?下面通過這篇文章讓我們一探究竟。有需要的朋友們下面來一起看看吧。
    2016-12-12
  • PHP cdata 處理(詳細介紹)

    PHP cdata 處理(詳細介紹)

    之前為項目趕進度用php 的simplexml來解析 xml, 當(dāng)時發(fā)現(xiàn) simplexml不支持<![CDATA標簽, 所有處于這個標簽內(nèi)的值都沒有辦法取到
    2013-07-07

最新評論