在给定的字符串列表中查找字符串的所有字谜
Find all anagrams of a string in a given list of strings
我最近开始学习数据结构和算法,我在 PHP 中遇到了这个问题。我可以用 Python 实现它,但我很难用 PHP 实现同样的效果。任何帮助将不胜感激。
*给定一个字符串数组,将字谜组合在一起。
array('ate', ''map', 'eat', ''pat', 'tea', 'tap')
*
以下是我到目前为止所做的事情:
function is_anagram($pharse1,$pharse2){
$status = false;
if($pharse1 && $pharse2){
$pharse1=strtolower(str_replace(" ","", $pharse1));
$pharse2=strtolower(str_replace(" ","", $pharse2));
$pharse1 = str_split($pharse1);
$pharse2 = str_split($pharse2);
sort($pharse1);
sort($pharse2);
if($pharse1 === $pharse2){
$status = true;
}
}
return $status;
}
你差不多完成了。不确定空格数是否也很重要,但就目前而言,我认为它很重要。
- 所以拆分字符串以获得单个字符的数组。
- 按 ascending/non-decreasing 顺序排序。
- 将其内爆以将其作为排序字符串获取。
- 正如您已经开始的 2 个步骤一样,现在您只需将当前字符串放入一个数组中,其中排序键是当前变位词所属的实际键。请参阅代码以获得更清晰的信息。
片段:
<?php
$map = [];
$data = array('ate', 'map', 'eat', 'pat', 'tea' , 'tap');
foreach($data as $str){
$strSplit = str_split($str);
sort($strSplit);
$strSplit = implode("",$strSplit);
$map[$strSplit][] = $str;
}
print_r($map);
更新:
查看你的输出格式,你可以在最后执行以下操作以将它们一起呼应:
echo implode(" ",array_merge(...array_values($map)));
我最近开始学习数据结构和算法,我在 PHP 中遇到了这个问题。我可以用 Python 实现它,但我很难用 PHP 实现同样的效果。任何帮助将不胜感激。
*给定一个字符串数组,将字谜组合在一起。
array('ate', ''map', 'eat', ''pat', 'tea', 'tap')
*
以下是我到目前为止所做的事情:
function is_anagram($pharse1,$pharse2){
$status = false;
if($pharse1 && $pharse2){
$pharse1=strtolower(str_replace(" ","", $pharse1));
$pharse2=strtolower(str_replace(" ","", $pharse2));
$pharse1 = str_split($pharse1);
$pharse2 = str_split($pharse2);
sort($pharse1);
sort($pharse2);
if($pharse1 === $pharse2){
$status = true;
}
}
return $status;
}
你差不多完成了。不确定空格数是否也很重要,但就目前而言,我认为它很重要。
- 所以拆分字符串以获得单个字符的数组。
- 按 ascending/non-decreasing 顺序排序。
- 将其内爆以将其作为排序字符串获取。
- 正如您已经开始的 2 个步骤一样,现在您只需将当前字符串放入一个数组中,其中排序键是当前变位词所属的实际键。请参阅代码以获得更清晰的信息。
片段:
<?php
$map = [];
$data = array('ate', 'map', 'eat', 'pat', 'tea' , 'tap');
foreach($data as $str){
$strSplit = str_split($str);
sort($strSplit);
$strSplit = implode("",$strSplit);
$map[$strSplit][] = $str;
}
print_r($map);
更新:
查看你的输出格式,你可以在最后执行以下操作以将它们一起呼应:
echo implode(" ",array_merge(...array_values($map)));