題目:判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。示例1:輸入: 121輸出: true示例2:輸入: -121輸出: false解釋: 從左向右讀, 為 -121 。從右向左讀, 為 121- 。因此它不是一個迴文數示例3:輸入: 10輸出: false解釋: 從右向左讀, 為 01 。因此它不是一個迴文數
解法:反轉一半數字
思路分析:
第一想到的兩種辦法是:1、通過整數轉換字符串反轉後判斷兩數是否相等(時間複雜度O(n))2、數學方法全反轉(時間複雜度O(logn))以上兩種方法可以解決,但不是最優的,因為還需要判斷是否益處最佳的方法:還是使用數學方法進行反轉,但是只需反轉一半即可PHP代碼實現:
複雜度分析:
時間複雜度:O(log10(n))對於每次迭代,我們會將輸入除以10時間複雜度:O(1)github
以後每次題解都會上傳到這個項目LeetCodePHP:https://github.com/zhangdejian/LeetCodePHP
題目來源
力扣(LeetCode):https://leetcode-cn.com/problems/palindrome-number/