Leetcode PHP 迴文數

友情提示:此篇文章大約需要閱讀 2分鐘58秒,不足之處請多指教,感謝你的閱讀。

題目

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

示例 1:

輸入: 121  輸出: true

示例 2:

輸入: -121  輸出: false  解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。

示例 3:

輸入: 10  輸出: false  解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。

進階:你能不將整數轉為字符串來解決這個問題嗎?

思路

迴文數或迴文數是指一個像14641這樣「對稱」的數,即:將這個數的數字按相反的順序重新排列後,所得到的數和原來的數一樣。這裡,「迴文」是指像「媽媽愛我,我愛媽媽」這樣的,正讀反讀都相同的單詞或句子。 維基百科

首先拿到了一個數之後先把特殊迴文數排除掉,之後計算出數的位數$div,之後將該數的第一位和最後一位

代碼

class Solution {      /**       * @param Integer $x       * @return Boolean       */      function isPalindrome($x) {          // 排除特殊值          if($x < 0) return false;          if($x >= 0 && $x < 10) return true;          if($x == 10) return false;          // 定義數值長度標識符          $div = 1;          // 判斷當前數值長度並賦值          while( $x / $div >= 10){              $div *= 10;          }          // 判斷左右數字是否相等若相同判斷左右第二位數字是否相同          while($x > 1){              $left = (int)($x / $div);              $right = $x % 10;              if($left != $right) return false;              $x = ($x % $div) / 10;              $div /= 100;          }          return true;      }  }

執行用時 :48 ms, 在所有 php 提交中擊敗了25.67%的用戶 內存消耗 :14.8 MB, 在所有 php 提交中擊敗了19.21%的用戶

優化

待解決。