<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* longest common subsequence
* @param s1 string字符串 the string
* @param s2 string字符串 the string
* @return string字符串
*/
function LCS( $s1 , $s2 )
{
// write code here
$len1 = strlen($s1);
$len2 = strlen($s2);
if( $len1 == 0 || $len2 == 0 ){
return -1;
}
for($i = 0; $i < $len1+1; $i++){
for($j = 0; $j < $len2+1; $j++){
if($j==0||$i==0){
$dp[$i][$j] =0;
continue;
}
if($s1[$i-1] == $s2[$j-1]){
$dp[$i][$j] =$dp[$i-1][$j-1]+1;
}else{
$dp[$i][$j] = max($dp[$i-1][$j],$dp[$i][$j-1]);
}
}
}
$re = '';
while($len1 !=0 && $len2!=0){
if($s1[$len1-1] == $s2[$len2-1] ){
$re = $re.$s1[$len1-1] ;
--$len1;
--$len2;
}else{
if($dp[$len1-1][$len2] > $dp[$len1][$len2-1]){
$len1--;
}else{
$len2--;
}
}
}
return strrev($re);
}