我完全是PHP的新手。今天,我遇到了一個問題,即使在搜索谷歌和挖掘SOF後,我也無法解決問題。這是Anagram算法。PHP中的Anagram算法
所以基本上,我明白這裏的問題:當用戶輸入一個字符串,我分裂它,並與我的庫(給定的數組)比較,那麼我將不得不通過2-3 -...等字符再次比較,這正是我現在被卡住的地方,我不知道如何加入數組的元素。
這是我正在實施的代碼,也是一個示例字典。
我有一個自制的字典,這些元素在數組$ dict中。而且我有一個供用戶輸入字符串的表單,輸入的字符串將被傳遞給下面的代碼並聲明爲$ anagram。我必須將輸入的字符串拆分爲與我的字典進行比較。但我不知道如何將它們加入字典中,比如比較兩個字母,三個字母等等等等。
<?php
$dict = array(
'abde',
'des',
'klajsd',
'ksj',
'hat',
'good',
'book',
'puzzle',
'local',
'php',
'e');
$anagram = $_POST['anagram'];
//change to lowercase
$anagram = strtolower($anagram);
//split the string
$test = str_split($anagram);
//compare with $dict for the first split without joining
for ($i=0; $i<strlen($anagram); $i++) {
if ($test[$i]==$dict[$i]) {
echo $test[$i]."<br />";
}
}
//problem: how to join elements of the array in the loops
//like user inputs "hellodes"
//after echo "e", how to join the elements like: h-e,h-l,h-l,h-o,h-d,h-e,h-s
//and then h-e-l,h-e-l,h-e-o...etc...
?>
我希望得到儘可能簡單的算法,因爲我完全是一個新手。我很抱歉,因爲我的英語不太好。 祝你好運, Khiem Nguyen。
發現了兩個鏈接:http://sourceforge.net/projects/phpag/和http://www.phpclasses.org/browse/file/12539 .html – Gerep
非常感謝Gerep,我已經閱讀過它們,但是這很沒用,因爲它太複雜了,我無法理解。我希望有一個更簡單的算法,只需通過使用循環連接字符串的元素並將其與庫進行比較即可。 – khiemnn
按字母順序排列字謎字符是否會更好,並且在循環中對每個字典單詞執行相同的操作。如果字謎是字典詞的子字符串,那麼它的謎語 – gunnx