做者:reed,一個熱愛技術的斜槓青年,程序員面試聯合創始人程序員
前文回顧:
leetcode1. 兩數之和--天天刷一道leetcode系列!
leetcode2. 兩數相加--天天刷一道leetcode系列!
leetcode3. 無重複字符的最長子串--天天刷一道leetcode系列!
leetcode4. 尋找兩個有序數組的中位數--天天刷一道leetcode系列!
leeetcode5.最長迴文子串--天天刷一道leetcode系列!面試
細心的同窗,可能會發現,今天直接跳到9了,由於有些題目不常見,就直接跳過了!這個系列主要是講常見的!數組
判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數。markdown
示例 1:ide
輸入: 121
輸出: truecode
示例 2:blog
輸入: -121
輸出: false
解釋: 從左向右讀, 爲 -121 。從右向左讀, 爲 121- 。所以它不是一個迴文數。leetcode
示例 3:字符串
輸入: 10
輸出: false
解釋: 從右向左讀, 爲 01 。所以它不是一個迴文數。it
若是採用toString()將數字直接轉換成字符串來處理,比較簡單,可是效率比較低。
這裏介紹另一種方式。
對於數字的末位,直接取餘就能夠了,對於數字的首位,咱們能夠這麼算。
首先用一個變量記錄數字的最高位,
好比 12321,能夠標記 help 爲 10000,
第一個末位爲 1,第一個首位爲 12321/10000=1,
接下來咱們須要計算 232 是否爲迴文,怎麼計算呢?
咱們須要去掉首位和末位。
能夠採用 x % help / 10 的方式
12321%10000==2321 能夠將最高位去掉,而後 2321/10==232 能夠將最低爲去掉。
最後不要忘記將 help/100。
public boolean isPalindrome(int x) { if (x < 0) { return false; } int help = 1; int tmp = x; while (tmp >= 10) { help *= 10; tmp /= 10; } while (x != 0) { if (x % 10 != x / help) { return false; } x = x % help / 10; help /= 100; } return true; }