標籤:func 包含 維數 二維數組 code 尋找 函數 數組 function
原題目這樣的:編寫一個函數來尋找字串數組中的最長公用首碼。如果不存在公用首碼,返回Null 字元串 ""
樣本 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
樣本 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公用首碼。
說明:
所有輸入只包含小寫字母 a-z 。
//代碼如下class test{ public function a6($arr) { //擷取字串數組中的第一個值,以這個元素的值為基準,數組中之後的元素都跟這個進行比較 $common_str= $arr[0]; //遍曆一下數組,把每個字串都切割成數組,切割完就是這樣的 array(0=>array(),1=>array()...n=>array()),你可以把得到的結果想成一個矩陣,矩陣的行數就是有多少個字串,也就是傳入數組的下標,列數就是每個字串被切割後的數組下標。 foreach ($arr as $key=>$value) { $arr[$key] = str_split($value); } //到這裡,$arr已經成為一個二維數組 $length = count($arr); $temp = $arr[0]; //因為我們要把每個字串都和傳入數組的第一個進行比較,所以把第一個單拿出來,作為一個基值 $len = count($temp); //這個for迴圈中的$i 為矩陣的列,這樣就能取出來每個子字串數組的第i位 for ($i=0;$i<$len;$i++) { //這裡for迴圈中的$n為矩陣的行,就是傳入字串數組的下標 for ($n=1; $n<$length; $n++) { //如果基值的第i位與後面字串的第i位不相等的話,截取基數字串到第i位前 if($temp[$i]!=$arr[$n][$i]) { //當然這兒有一個特殊情況,就是比較第0位還沒比完時候,就bi掉了,那麼就返回無相同首碼 if($i == 0) { return "無相同首碼"; } return substr($common_str,0,$i); } } //此處判斷是 加入基數字串遍曆完成,全部都相同,那麼我們返回基數字串 if ($i==$len-1) { return $commen_str; } } }}
PHP(5)“最長公用首碼”演算法問題