为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
阿波罗的战车 2023-08-11 16:34:09
我最近开始学习数据结构和算法,我有一个在 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)));


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信