2017-01-09 5 views
-1

Я написал PHP-код для поиска общих букв в двух строках. В настоящее время он имеет сложность O(n^2), его можно оптимизировать.Можно ли улучшить это решение?

<?php 

$b="AMITABH BACHHAN"; 
$a="RAJNIKANTH"; 

$cmnlet=""; 
for($i=0;$i<strlen($a);$i++) 
{ 
    for($j=0;$j<strlen($a);$j++) 
    { 
     //echo "a=".$a[$i]." b=".$b[$j]; 
     if((strcmp($a[$i],$b[$j]))==0) 
     { 

      $cmnlet.=$a[$i]; 
      //echo "commonletter ".$cmnlet; 
     }  
    } 
} 

echo (implode(array_unique(str_split($cmnlet)))); 
?> 
+5

Если код работает, и вы просто хотите знать, если есть лучший способ, вы должны разместить его в [Обзор Code] (http://codereview.stackexchange.com/). –

+1

https://eval.in/712106 –

+1

спасибо @Anant – katty

ответ

1
$as = str_split ($a, 1); 
$bs = str_split ($b, 1); 
$result = implode(array_intersect($as, $bs)); 

отредактированы как предполагают, по @Gougata Бозе:

$result = implode(array_unique(array_intersect($as, $bs))); 
+2

Было бы лучше, если бы вы 'array_unique()'. –