[LeetCode]9 回文数
题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 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) { int y = x; if(x<0) return false; else if(x==0){ return true; }else { int length = String.valueOf(y).length(); String result = ""; for(int i = length-1;i>=0;i--){ int extra = y%10; y = y/10; result = result + extra; } if(result.equals(x+"")){ return true; } } return false; } }
速度:107ms,应该还有办法吧