[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) {
        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

比上次慢 但觉得还能有提升,再议

猜你喜欢

转载自www.cnblogs.com/Yintianhao/p/9943908.html