PHP(5)“最長公用首碼”演算法問題

來源:互聯網
上載者:User

標籤: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)“最長公用首碼”演算法問題

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。