读书人

java-判断一个整数是不是回文考虑溢

发布时间: 2012-09-16 17:33:17 作者: rapoo

java-判断一个整数是否回文,考虑溢出

public class PalindromeInt {/** * PalindromeInt,like 1,121,12321.... * you should consider the possibility that the reversed number might overflow * eg. 1...................9,after reversing,9 comes to first,and...you know that. *  */public static void main(String[] args) {int[] a={12321,17770};PalindromeInt pi=new PalindromeInt();boolean re=pi.isPalindromeInt2(a[0]);System.out.println(re);re=pi.isPalindromeInt2(a[1]);System.out.println(re);}//generic solution public boolean isPalindromeInt(int x){if(x<0)return false;int x2=x;int y=0;while(x>0){y*=10;y+=x%10;x/=10;}return x2==y;}//better solution//avoid overflowpublic boolean isPalindromeInt2(int x){if(x<0)return false;boolean re=true;int div=1;while(x/div>=10){div*=10;}while(x>0){int h=x/div;//headint t=x%10;//tailif(h!=t){re=false;break;}x=(x%div)/10;//now x is 232 instead of 12321div/=100;//accordingly,div should be 100 instead of 10000}return re;}/* c/c++? I don't know how it works * invoke like that: isPalindrome(x, x)boolean isPalindrome(int x,int &y){if (x < 0) return false;  if (x == 0) return true;  if (isPalindrome(x/10, y) && (x%10 == y%10)) {    y /= 10;    return true;  } else {    return false;  }}*/}

读书人网 >编程

热点推荐