如题,现有一个字符串
$str = [p,a,d,pa,pad,ipad,ipad2];如何去除里面的冗余数据,比如如果某个值已经包含其他值了,就需要把它删除掉。
ipad包含pad,就需要删除ipad;
pad包含pa,就需要删除pad;
pa包含a,就需要删除pa;最后得到的数据是:
$str = [p,a,d];算法该怎么写?
$str = [p,a,d,pa,pad,ipad,ipad2];如何去除里面的冗余数据,比如如果某个值已经包含其他值了,就需要把它删除掉。
ipad包含pad,就需要删除ipad;
pad包含pa,就需要删除pad;
pa包含a,就需要删除pa;最后得到的数据是:
$str = [p,a,d];算法该怎么写?
pad 和 da 呢?算包含还是不包含?
<?php$str = array('p','pad','ipad','a','d','pa','ipad2');
$flagArray = array(0,0,0,0,0,0,0);
$result = array();for($i=0;$i<count($str);$i++)
{
for($j=0;$j<count($str);$j++)
{
if($i !== $j)
{
if(strpos($str[$j],$str[$i]) !== false)
{
$flagArray[$j] = 1;
}
}
}
}
for($i=0;$i<count($str);$i++)
{
if(!($flagArray[$i]))
{
array_push($result,$str[$i]);
}
}
print_r($result);?>
$str = array('p','pad','ipad','a','d','pa','ipad2');
$flagArray = array(0,0,0,0,0,0,0);
$result = array();for($i=0;$i<count($str);$i++)
{
for($j=0;$j<count($str);$j++)
{
if($i !== $j)
{
if(strpos($str[$j],$str[$i]) !== false)
{
$flagArray[$j] = 1;
}
}
}
}
for($i=0;$i<count($str);$i++)
{
if(!($flagArray[$i]))
{
array_push($result,$str[$i]);
}
}
print_r($result);
$str = array('p','a','d','pa','pad','ipad','ipad2');
for($k=0;$k<count( $str );$k++)
{
if(empty( $str[$k] )) continue;
$a = preg_grep('#(?='.$str[$k].')#i',$str);
foreach((array)$a as $k2=>$v2 )
{
if($k != $k2 ) unset( $str[$k2] );
}
}
print_r( $str );