查找给定字符串列表中字符串的所有字谜

我最近开始学习数据结构和算法,我有一个在 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;

}


阿波罗的战车
浏览 86回答 1
1回答

波斯汪

你几乎已经完成了。不太确定空格数是否也很重要,但就目前而言,我认为它确实重要。因此,拆分字符串以获得单个字符的数组。按升序/非降序对它们进行排序。将其内爆回来以将其作为已排序的字符串获得。正如您已经开始的 2 个步骤一样,现在您只需将当前字符串放入一个数组中,其中排序键是当前字谜所属的实际键。请参阅代码以获得更清晰的信息。片段:<?php$map = [];$data = array('ate', 'map', 'eat', 'pat', 'tea' , 'tap');foreach($data as $str){&nbsp; &nbsp; $strSplit = str_split($str);&nbsp; &nbsp; sort($strSplit);&nbsp; &nbsp; $strSplit = implode("",$strSplit);&nbsp; &nbsp; $map[$strSplit][] = $str;&nbsp;}print_r($map);更新:查看您的输出格式,您最终可以执行以下操作以将它们回显在一起:echo implode(" ",array_merge(...array_values($map)));
打开App,查看更多内容
随时随地看视频慕课网APP