问题链接:https://oj.leetcode.com/problems/palindrome-number/
问题描述:Determine whether an integer is a palindrome. Do this without extra space.
API:public boolean isPalindrome(int x)
分析:事实上就是头尾相比较,方式有很多种,但基本上都需要利用到log10这个函数,通过log10得到一个最大位数bit_num,然后对半比较。
下面给出两段代码仅供参考:
public boolean isPalindrome(int x) {
if(x < 0)
return false;
int head = (int)Math.log10((double)x);
int tail = 1;
while(head >= tail){
int head_bit = x / (int)Math.pow(10, head);
int tail_bit = x % 10;
if(head_bit != tail_bit)
return false;
x -= head_bit * (int)Math.pow(10, head);
x /= 10;
head -= 2;
}
return true;
}
这个方式是通过得商和模10来对比首尾bit。
public boolean isPalindrome(int x) {
if(x < 0)
return false;
int bitnum = (int)Math.log10(x) + 1;
for(int i = 0; i < bitnum / 2; i++){
int left = (x % (int)Math.pow(10, bitnum - i)) / (int)Math.pow(10, bitnum - i - 1);
int right = x % (int)Math.pow(10, i + 1) / (int)Math.pow(10, i);
if(left != right)
return false;
}
return true;
}
这个方式是对半折,本质上也是头尾求商对比bit。