9. Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space.

第一种想到的是转化为数组,前后对比元素看是否相等。第二种是不开辟新的数组空间,进行数字的前后比较。其实还有一种就是反转该数字,看是不是相等(但是这种情况还得考虑溢出吧(其实如果溢出,那么一定不是回文串,如果是回文串,怎么可能溢出))

public class Solution {
    public boolean isPalindrome(int x) {
        String s=Integer.toString(x);
        char[] a=s.toCharArray();
        int len=a.length;
        for(int i=0;i<len/2;++i){
            if(a[i]!=a[len-1-i])   return false;
        }
        return true;
    }
}


上边那个开辟了新的空间,下边的没有,纯粹就是考虑数学问题

public class Solution {
    public boolean isPalindrome(int x) {
        if(x<0) return false;
        int count=0,z=x;
        while(z!=0){
            z/=10;
            ++count;  //数一数有几个位数
        }
        while(x!=0){
            int y=(int)Math.pow(10,count-1);
            if(x%10!=x/y)   return false;
            x=(x%y)/10; //去掉最高位和最低位
            count=count-2;  //位数减去2
        }
        if(x!=0 && x<10 && count>1)    return false; //对于100021这种的判断
        return true;
    }

别人的:http://www.programcreek.com/2013/02/leetcode-palindrome-number-java/,代码是

public class Solution {
    public boolean isPalindrome(int x) {
        //negative numbers are not palindrome
        if (x < 0)
            return false;
 
        // initialize how many zeros
        int div = 1;
        while (x / div >= 10) {
            div *= 10;
        }
 
        while (x != 0) {
            int left = x / div;
            int right = x % 10;
 
            if (left != right)
                return false;
 
            x = (x % div) / 10;
            div /= 100;
        }
 
        return true;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值