用PHP写一个字谜函数?
Posted
技术标签:
【中文标题】用PHP写一个字谜函数?【英文标题】:Using PHP write an anagram function? 【发布时间】:2014-03-08 15:30:39 【问题描述】:它应该处理不同的短语并返回布尔结果。
用法:
$pharse1 = 'ball';
$pharse2 = 'lbal';
if(is_anagram($pharse1,$pharse2))
echo $pharse1 .' & '. $pharse2 . ' are anagram';
else
echo $pharse1 .' & '. $pharse2 . ' not anagram';
【问题讨论】:
你自己的问题回答了吗? 是的。我回答了我的问题 一分钟内很快。你为什么认为这个问题有助于 SO。换句话说,你为什么要放置它。 我认为下一步将是接受您的回答。 ;-) 哈哈哈...今天不让我做。所以明天需要试试。 ;-) 【参考方案1】:还有更简单的方法
function is_anagram($a, $b)
return(count_chars($a, 1) == count_chars($b, 1));
示例:
$a = 'argentino';
$b = 'ignorante';
echo is_anagram($a,$b); // output: 1
$a = 'batman';
$b = 'barman';
echo is_anagram($a,$b); // output (empty):
【讨论】:
【参考方案2】: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;
【讨论】:
【参考方案3】: function check_anagram($str1, $str2)
if (count_chars($str1, 1) == count_chars($str2, 1))
return "This '" . $str1 . "', '" . $str2 . "' are Anagram";
else
return "This two strings are not anagram";
ECHO check_anagram('education', 'ducatione');
【讨论】:
【参考方案4】:我没有看到任何答案解决了大写字母与小写字母与 count_chars() 不同的字符这一事实
if (isAnagram('Polo','pool'))
print "Is anagram";
else
print "This is not an anagram";
function isAnagram($string1, $string2)
// quick check, eliminate obvious mismatches quickly
if (strlen($string1) != strlen($string2))
return false;
// Handle uppercase to lowercase comparisons
$array1 = count_chars(strtolower($string1));
$array2 = count_chars(strtolower($string2));
// Check if
if (!empty(array_diff_assoc($array2, $array1)))
return false;
if (!empty(array_diff_assoc($array1, $array2)))
return false;
return true;
【讨论】:
【参考方案5】:这是我的变种:
public function is_anagram($wrd_1, $wrd_2)
$wrd_1 = str_split ( strtolower ( utf8_encode($wrd_1) ) );
$wrd_2 = str_split( strtolower ( utf8_encode($wrd_2) ) );
if ( count($wrd_1)!= count($wrd_2) ) return false;
if ( count( array_diff ( $wrd_1 ,$wrd_2) ) > 0 ) return false;
return true;
【讨论】:
【参考方案6】:呵呵,虽然不大,但也很好用 :)
public static function areStringsAnagrams($a, $b)
//throw new Exception('Waiting to be implemented.');
$a = str_split($a);
$test = array();
$compare = array();
foreach ($a as $key)
if (!in_array($key, $test))
array_push($test, $key);
$compare[$key] = 1;
else
$compare[$key] += 1;
foreach ($compare as $key => $value)
if ($value !== substr_count($b, $key))
return false;
return true;
【讨论】:
以上是关于用PHP写一个字谜函数?的主要内容,如果未能解决你的问题,请参考以下文章