我最近開始學習數據結構和算法,我有一個在 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 關注
- 112 瀏覽
添加回答
舉報
0/150
提交
取消