Loading

[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,应该还有办法吧

 

posted @ 2018-11-11 22:15  1900Yin  阅读(137)  评论(0编辑  收藏  举报