Leetcode PHP 迴文數
- 2020 年 2 月 1 日
- 筆記
友情提示:此篇文章大約需要閱讀 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%的用戶
優化
待解決。