我正在研究(爲了好玩)寫一個腳本來識別迴文。到目前爲止,我在「皮划艇」,「賽車」,「安娜」,「一個男人一條運河巴拿馬計劃」方面取得了成功:但後一個詞組的變體例如「amanaplana canalpan ama」給我帶來了問題。PHP初學者回文腳本
作爲一個方面說明:我也明白,使用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,我認爲,我的眼睛,相對業餘),我會很高興。
在此先感謝。
+1這意味着一個討巧。 – Kumar
var name「word_array」具有誤導性...... str_split實際上是返回一個字母數組。 – 2011-07-17 13:51:11