LeetCode题解 #9 Palindrome Number

题目大意:给定一个整型(即int),判断其是否为回文数

 

首先负数肯定不是回文了,只要判断正数就好。

 

将数字不断%10/10一个个取出来,放到一个数组中。然后再从数组两头开始往中间比较,有不等的马上返回false就好。

 

public static boolean isPalindrome(int x) {

if(x<0)
return false;




int [] data = new int [13];
int count = 0;

int temp = 0;

while(x>0){

data[count]=x%10;
x/=10;
count++;


}


for(int i=0,j=count-1;i<j;i++,j--){

if(data[i]!=data[j])
return false;


}





return true;

}

 

改进办法,在做成数组的时候,最后还要从两头往中间遍历,虽然int的位数不长,但是毕竟还是O(n)

所以不用数组了,直接构造从右边开始构造一个数,然后直接比较就好了。

bool isPalindrome(int x) {

// 负数肯定不为回文数

if (x < 0) return false;

// 将其反过来存放

long y = 0, z = x;

while (x > 0) { y = y * 10 + x % 10; x = x / 10; }

// 返回判断结果

return y == z;

}

转载于:https://www.cnblogs.com/wzben/p/5017998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值