我正在(为了好玩)编写一个可以识别回文的脚本。到目前为止,我在“Kayak”、“Racecar”、“Anna”、“A man a plan a canal Panama”方面取得了成功:但后一个短语的变体,如“amanaplana canalpan ama”给我带来了问题。
附带说明:我确实知道使用 PCRE 会让事情变得更容易,但我并不精通它,我的主要目标之一是了解检查回文背后的算法。
<?php
$word = "amanaplana canalpan ama";
$space = " ";
$word_smallcase = strtolower($word);
$word_array = str_split($word_smallcase);
if(in_array($space, $word_array)){
for($m = 0; $m<count($word_array); $m = $m + 1){
if($word_array[$m] == $space)
unset($word_array[$m]);
}
}
$count = 0;
$scan_count = -1;
for($i = 0; $i < (count($word_array)/2); $i = $i + 1){
for($j = count($word_array); $j > (count($word_array)/2); $j = $j - 1){
if($word_array[$i]==$word_array[$j]){
$count = $count + 1;
break;
}
}
$scan_count = $scan_count + 1;
}
if ($count == $scan_count){
echo $word." is a palindrome";
}
else{
echo $word ." is NOT a palindrome";
}
?>
我很感激有关以下方面的回应:
- 我遇到的错误的识别。
- 关于如何改进代码的建议(如果我可以在不诉诸 $count 或 $scan_count 的情况下使事情正常进行,在我看来,这似乎是相对业余的)。
提前致谢。