最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

最新評論

雷山县| 巴林右旗| 乌兰浩特市| 西充县| 周宁县| 都江堰市| 黑河市| 冷水江市| 乌审旗| 天门市| 金阳县| 兴化市| 阜南县| 黑龙江省| 象山县| 马公市| 贵德县| 蓬莱市| 伊春市| 苏尼特右旗| 惠水县| 阿勒泰市| 宜春市| 六盘水市| 临西县| 潍坊市| 德安县| 永顺县| 普兰店市| 靖远县| 满城县| 巴马| 定边县| 堆龙德庆县| 敦煌市| 峨眉山市| 沾化县| 文登市| 桐乡市| 申扎县| 揭阳市|