判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121 輸出: true
示例 2:
輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。
示例 3:
輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個回文數。
進階:
你能不將整數轉為字符串來解決這個問題嗎?
解法一:使用字符串反轉,比較反轉前后的字符串是否相等
class Solution { public boolean isPalindrome(int x) { String str = String.valueOf(x); final StringBuilder builder = new StringBuilder(str); if(builder.reverse().toString().equals(str)){ return true; } return false; } }
解法二:不使用字符串,采用list存儲int各個位置上的變量置,然后從list兩端向中間比較數值是否相等
class Solution { public boolean isPalindrome(int x) { if(x<0) return false; List list=new ArrayList(); while(x/10!=0){ list.add(x%10); x=x/10; } list.add(x); for(int i=0;i<list.size()/2;i++) { if(list.get(i)!=list.get(list.size()-i-1)) return false; } return true; } }
兩種方法的耗時相近~