题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
思路:
一种是利用StringBuffer的反转函数来处理,有点慢
二种是将直接算出他的回文数
第一种代码:
class Solution { public boolean isPalindrome(int x) { StringBuffer s = new StringBuffer(); s.append(x); //System.out.println(s.reverse()+"--"+String.valueOf(x)); try { if(s.reverse().toString().equals(String.valueOf(x))){ return true; } }catch (Exception e){ //e.printStackTrace(); return false; } return false; } }
速度:花了230ms
第二种代码:
class Solution { public boolean isPalindrome(int x) { if(x<0) return false; else if(x==0){ return true; }else { if(getPalindrome(x)==x){ return true; } } return false; } public int getPalindrome(int x){ int length = String.valueOf(x).length(); int sum = 0; for(int i = length-1;i>=0;i--){ int extra = x%10; x = x/10; sum = sum + extra*(int)(Math.pow(10.0,(double) i)); //System.out.println("sum"+sum); } return sum; } }
速度:143ms
比上次慢 但觉得还能有提升,再议