PHP(3)“判斷迴文數”演算法問題

來源:互聯網
上載者:User

標籤:函數   array   span   rev   style   一半   ima   alt   演算法   

  原題目:判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

  eg:

  

class test     {         public function a3($number)        {            $num = $number;
      //輸入的一個字串,str_split分割為數組,判斷數組第一個是否為“-”,如果為負數,一定不是迴文數,也可加一個可否被10整除的判斷 $num_arr = str_split($num); if ($num_arr[0] == ‘-‘) { return 0; } else {
      //定義back_num為$number反序,同理分割為數組 $back_num = strrev($number); $back_arr = str_split($back_num); $length = count($back_arr);
      //判斷$num_arr與$back_arr的數組中的第i個是否一樣 for ($i=0; $i < $length; $i++) { if ($num_arr[$i] != $back_arr[$i]) { return 0; } } echo $number; return $number; } } }

  如果是迴文數,則輸出,否,則返回false。

  這個我感覺是最容易理解的一種方法,也是最簡單粗暴的,上面代碼也可以用array_map這個函數,不過我感覺整體思路一樣。

  當然還有另外一種思路,迴文數這個東西,它是一串有特點的數,如果一個整數為迴文數,那麼它的前半部分與後半部分是一樣的,所以其實咱們可以遍曆輸入整數長度的一半即可,具體看代碼

class test     {        public function a5($number)          {
       //老規矩。。跟上面的一樣 $num = $number; $num_arr = str_split($num); if($num_arr[0] == ‘-‘) { return 0; } else { $length = count($num_arr);
       //定義$mid為當前數組長度的一半,如果長度為奇數,向下取整  $mid = floor($length/2); for ($i=0; $i < $mid; $i++) {
       //如果num_arr中,第i個與第length-1-i個都一樣的話,就是迴文數了,輸出迴文數 if ($num_arr[$i] != $num_arr[$length-1-$i]) return false; } echo $num; return $num; } } }

 

PHP(3)“判斷迴文數”演算法問題

相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。