我最近开始学习数据结构和算法,我有一个在 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;}
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
你几乎已经完成了。不太确定空格数是否也很重要,但就目前而言,我认为它确实重要。
因此,拆分字符串以获得单个字符的数组。
按升序/非降序对它们进行排序。
将其内爆回来以将其作为已排序的字符串获得。
正如您已经开始的 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)));
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消