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


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

  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; } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM