当前位置:首页 > 开发 > 编程语言 > Java > 正文

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

发表于: 2012-01-15   作者:bylijinnan   来源:转载   浏览次数:
摘要: public class PalindromeInt { /** * PalindromeInt,like 1,121,12321.... * you should consider the possibility that the reversed number might overflow * eg. 1...................9,after r

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 overflow
	public 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;//head
			int t=x%10;//tail
			if(h!=t){
				re=false;
				break;
			}
			x=(x%div)/10;//now x is 232 instead of 12321
			div/=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;
		  }
	}
	*/
	
}


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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
所有的有关于回文数的定义和如何判断一个n的d进制数是否是回文数的方法都在我的代码注释当中,直接
  今天,看一位学长的博客《递归的力量》,受到的启发还是很多的,以前写递归程序,从来都没有好好
今天,看一位学长的博客《递归的力量》,受到的启发还是很多的,以前写递归程序,从来都没有好好想过
WaitForSingleObject的应用 你还再为怎么判断一个程序是否结束而苦恼吗?或许你在想可以用一个循环
[color=#eeddcc] parseInt('db') 返回NaN 用parseInt('db')==NaN 返回false 解决方法: 判断是否是数
判断一个对象是否存在(赋值)的三种办法如下: if obj <> nil then ... if Boolean(obj) then .
如何判断是否中奖 问题描述: 假设开奖结果为:A B C,A、B、C可能相同也可能不同,抽奖结果为:X Y
1,如何判断是否过期呢? 有时候时间是以字符串的方式传递的.那如何比较呢? 可以使用字符串的 compare
1,如何判断是否过期呢? 有时候时间是以字符串的方式传递的.那如何比较呢? 可以使用字符串的 compare
1,如何判断是否过期呢? 有时候时间是以字符串的方式传递的.那如何比较呢? 可以使用字符串的 compare
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号