根據數的位數取出首尾進行比較,判斷是否迴文java
題目:工具
判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數ui
示例 1:code
輸入: 121 輸出: true
示例 2:leetcode
輸入: -121 輸出: false 解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。所以它不是一個迴文數
示例 3:字符串
輸入: 10 輸出: false 解釋: 從右向左讀, 爲 01 。所以它不是一個迴文數
解法:數學
數學方法io
取數的首尾進行比較class
public boolean isPalindrome(int x) { //邊界判斷 if (x < 0) return false; if (x < 10) return true; if (x % 10 == 0) return false; int div = 1; while (x / div >= 10) div *= 10; while (x > 0) { int left = x / div; int right = x % 10; if (left != right) return false; x = (x % div) / 10;//先後各去掉一位 div /= 100; } return true; }
雙棧比較sed
棧的 equals 方法判斷兩個棧中元素是否相同
class Solution { public boolean isPalindrome(int x) { String s = String.valueOf(x); int len = s.length(); Stack s1 = new Stack(); Stack s2 = new Stack(); for (int i = 0; i < len; i++) { s1.push(s.charAt(i)); } for (int i = len - 1; i >= 0; i--) { s2.push(s.charAt(i)); } return s1.equals(s2); } }
字符串工具類反轉
class Solution { public boolean isPalindrome(int x) { String reversedStr = (new StringBuilder(x + "")).reverse().toString(); return (x + "").equals(reversedStr); } }